);
@@ -274,15 +274,15 @@ export default function Search() {
-### Display a form submission error without JavaScript {/*display-a-form-submission-error-without-javascript*/}
+### Обработка ошибок при отправке формы без JavaScript {/*display-a-form-submission-error-without-javascript*/}
-Displaying a form submission error message before the JavaScript bundle loads for progressive enhancement requires that:
+Для отображения сообещния об ошибке при отправке формы до загрузки JavaScript-бандла и соблюдения прогрессивного улучшения необходимо следующее:
-1. `
` be rendered by a [Server Component](/reference/rsc/use-client)
-1. the function passed to the `
`'s `action` prop be a [Server Function](/reference/rsc/server-functions)
-1. the `useActionState` Hook be used to display the error message
+1. `
` должен рендерится [серверным компонентом](/reference/rsc/use-client)
+1. функция, передаваемая в проп `action` тега `
`, должна быть [серверной функцией](/reference/rsc/server-functions)
+1. для отображения сообщения об ошибке должен использоваться хук `useActionState`
-`useActionState` takes two parameters: a [Server Function](/reference/rsc/server-functions) and an initial state. `useActionState` returns two values, a state variable and an action. The action returned by `useActionState` should be passed to the `action` prop of the form. The state variable returned by `useActionState` can be used to display an error message. The value returned by the Server Function passed to `useActionState` will be used to update the state variable.
+`useActionState` принимает два параметра: [серверную функцию](/reference/rsc/server-functions) и начальное состояние. `useActionState` возвращает два значения — переменную состояния и действие. Действие, возвращаемое хуком `useActionState`, должно быть передано в проп `action` формы. Переменная состояния, возвращаемая `useActionState`, должна использоваться для отображения сообщения об ошибке. Значение, возвращаемое серверной функцией, переданной в `useActionState`, будет использоваться для обновления переменной состояния.
@@ -296,7 +296,7 @@ export default function Page() {
const email = formData.get("email");
try {
await signUpNewUser(email);
- alert(`Added "${email}"`);
+ alert(`Добавлен "${email}"`);
} catch (err) {
return err.toString();
}
@@ -304,12 +304,12 @@ export default function Page() {
const [message, signupAction] = useActionState(signup, null);
return (
<>
-
Signup for my newsletter
-
Signup with the same email twice to see an error
+
Подпишитесь на мою рассылку
+
Подпишитесь дважды, используя один и тот же адрес электронной почты, чтобы увидеть ошибку
-
+
{!!message &&
{message}
}
>
@@ -322,7 +322,7 @@ let emails = [];
export async function signUpNewUser(newEmail) {
if (emails.includes(newEmail)) {
- throw new Error("This email address has already been added");
+ throw new Error("Этот адрес электронной почты уже добавлен");
}
emails.push(newEmail);
}
@@ -330,13 +330,13 @@ export async function signUpNewUser(newEmail) {
-Learn more about updating state from a form action with the [`useActionState`](/reference/react/useActionState) docs
+Узнать больше об обновлении состояния при помощи действия формы можно в документации [`useActionState`](/reference/react/useActionState)
-### Handling multiple submission types {/*handling-multiple-submission-types*/}
+### Обработка нескольких типов отправок {/*handling-multiple-submission-types*/}
-Forms can be designed to handle multiple submission actions based on the button pressed by the user. Each button inside a form can be associated with a distinct action or behavior by setting the `formAction` prop.
+Формы могут быть спроектированы так, чтобы они могли обрабатывать несколько действий в зависимости от того, какую кнопку нажал пользователь. Каждую кнопку внутри формы можно связать с отдельным действием или поведением, путём установки пропа `formAction`.
-When a user taps a specific button, the form is submitted, and a corresponding action, defined by that button's attributes and action, is executed. For instance, a form might submit an article for review by default but have a separate button with `formAction` set to save the article as a draft.
+Когда пользователь нажимает на определённую кнопку, форма отправляется, и начинает выполняться соответствующее действие, которое определяется атрибутами и действием этой кнопки. Например, форма может по умолчанию отправлять статью на рецензирование, но иметь отдельную кнопку с `formAction`, которая будет сохранять статьи в качестве черновика.
@@ -345,20 +345,20 @@ export default function Search() {
function publish(formData) {
const content = formData.get("content");
const button = formData.get("button");
- alert(`'${content}' was published with the '${button}' button`);
+ alert(`'${content}' был опубликован по кнопке '${button}'`);
}
function save(formData) {
const content = formData.get("content");
- alert(`Your draft of '${content}' has been saved!`);
+ alert(`Ваш черновик с '${content}' был сохранён!`);
}
return (