useFormStatus¶
Canary
Хук useFormStatus
в настоящее время доступен только в канале React canary и экспериментальном канале. Подробнее о каналах выпуска React здесь.
useFormStatus
- это хук, который предоставляет вам информацию о статусе последней отправки формы.
1 |
|
Описание¶
useFormStatus()
¶
Хук useFormStatus
предоставляет информацию о статусе последней отправки формы.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 |
|
Чтобы получить информацию о статусе, компонент Submit
должен быть отображен внутри <form>
. Хук возвращает информацию, например, свойство pending
, которое говорит вам, активно ли отправляется форма.
В приведенном выше примере Submit
использует эту информацию, чтобы отключить нажатие <button>
, пока форма отправляется.
Параметры
useFormStatus
не принимает никаких параметров.
Возвращаемое значение
Объект status
со следующими свойствами:
-
pending
: Булево. Еслиtrue
, это означает, что родительская<form>
ожидает отправки. В противном случае -false
. -
data
: Объект, реализующий интерфейсFormData
, который содержит данные, отправляемые родительской<form>
. Если нет активной отправки или нет родительской<form>
, то это будетnull
. -
method
: Строковое значение либо'get'
, либо'post'
. Это означает, что родительская<form>
отправляется с помощьюGET
илиPOST
HTTP-метода. По умолчанию<form>
использует методGET
и может быть указан свойствомmethod
. -
action
: Ссылка на функцию, переданную в свойствоaction
на родительской<form>
. Если родительская<form>
отсутствует, свойство равноnull
. Если свойствуaction
передано значение URI или свойствоaction
не указано,status.action
будет равноnull
.
Ограничения
- Хук
useFormStatus
должен быть вызван из компонента, который отображается внутри<form>
. useFormStatus
будет возвращать информацию о состоянии только для родительской<form>
. Он не будет возвращать информацию о статусе для любой из<form>
, отображаемой в том же компоненте или дочерних компонентах.
Использование¶
Отображение состояния ожидания во время отправки формы¶
Чтобы отобразить состояние ожидания во время отправки формы, вы можете вызвать хук useFormStatus
в компоненте, отображаемом в <form>
, и прочитать возвращаемое свойство pending
.
Здесь мы используем свойство pending
, чтобы указать, что форма отправляется.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 |
|
useFormStatus
не будет возвращать информацию о статусе для <form>
, отображаемой в том же компоненте
Хук useFormStatus
возвращает информацию о статусе только для родительской <form>
, но не для всех <form>
, отображаемых в том же компоненте, который вызывает хук, или в дочерних компонентах.
1 2 3 4 5 6 |
|
Вместо этого вызовите useFormStatus
из компонента, который находится внутри <form>
.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 |
|
Считывание данных из формы¶
Вы можете использовать свойство data
информации о состоянии, возвращаемой из useFormStatus
, чтобы показать, какие данные отправляет пользователь.
Здесь у нас есть форма, в которой пользователь может запросить имя пользователя. Мы можем использовать useFormStatus
для отображения временного сообщения о статусе, подтверждающего, какое имя пользователя было запрошено.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 |
|
1 2 3 4 5 6 7 8 9 10 |
|
Решение проблем¶
status.pending
никогда не бывает true
¶
useFormStatus
будет возвращать информацию о статусе только для родительской <form>
.
Если компонент, вызывающий useFormStatus
, не вложен в <form>
, status.pending
всегда будет возвращать false
. Убедитесь, что useFormStatus
вызывается в компоненте, который является дочерним элементом <form>
.
useFormStatus
не будет отслеживать статус <form>
, отображаемого в том же компоненте.
Источник — https://react.dev/reference/react-dom/hooks/useFormStatus