Прехвърлянето на работа от клиенти към вашия сървър е лесно със сървърните действия на Next.
Изданието 13.4 на Next.js дойде със стабилен рутер за приложения и възможност за мутация на данни с действия на сървъра. Тази функция е абсолютна промяна на играта, защото ви позволява да извършвате мутации на данни изцяло от сървърни компоненти. Това носи множество предимства в области като скорост, сигурност и цялостна производителност на приложението.
Научете какви са действията на сървъра и как да използвате тази нова функция във вашето приложение Next.js.
Какво представляват действията на сървъра?
Сървърните действия ви позволяват да пишете еднократни функции от страна на сървъра наред с вашите сървърни компоненти. Това е огромно, защото вече не е необходимо да пишете API маршрути, когато изпращате формуляри или извършвате друг вид мутация на данни, включително Мутации на данни в GraphQL.
Можете да имате функции, които се изпълняват на вашия сървър, и след това можете да ги извиквате от клиентски или сървърни компоненти. Това е алфа функция в Next.js 13.4 и е изградена върху React Actions. Използването на сървърни действия води до намален JavaScript от страна на клиента и може да ви помогне да създавате прогресивно подобрени формуляри.
Пример за действия на сървъра
С действията на сървъра можете да извършвате мутации вътре в Next.js, на сървъра. Разгледайте тази нова функция с примерна страница Next.js, която изобразява формуляр, позволяващ ви да създадете публикация.
Ето вноса:
импортиране Връзка от"следваща/връзка"
импортиране FormGroup от"@/components/FormGroup"
импортиране {revalidateTag} от"следващ/кеш"
импортиране { пренасочване } от"следващ/навигация"
Сега за кода за създаване на публикацията. Тази функция е действие на сървъра; той работи на сървъра и изпраща заглавието и тялото на публикацията към API (който създава публикацията в базата данни):
асинхроненфункцияcreatePost(данни) {
"използване на сървър"
конст заглавие = data.get("заглавие")
конст тяло = data.get("тяло")изчакайте извличане (" http://127.0.0.1/posts", {
заглавка: {"Тип съдържание": "приложение/json"},
метод: POST,
тяло: JSON.stringify({заглавие, тяло})
})
revalidateTag("постове")
пренасочване("/")
}
Тази функция получава заглавието и тялото на публикацията, които след това изпраща на /posts крайна точка чрез POST заявка. След това принуждава кеша да опресни съдържанието, свързано с маркера „posts“, и пренасочва обратно към началната страница.
Ето формуляр за събиране на заглавието и тялото на новата публикация:
износпо подразбиране NewPostForm() {
връщане (