React19新特性,如何理解 useFormStatus 表单状态钩子?
发布于 作者:苏南大叔 来源:程序如此灵动~

React@19
新出的特性,钩子useFormStatus()
。看名字,它必然是配合表单元素使用的。它能够在表单子组件中,获取到表单提交时的pending
状态和表单内容。然而,这个useFormStatus()
钩子,是到目前为止,最奇怪的钩子,没有之一。

苏南大叔的“程序如此灵动”博客,记录苏南大叔的代码编程经验总结。本文测试环境:nodejs@20.18.0
,create-react-app@5.0.1
,react@19.0.0
。useFormStatus()
的作用对象是表单的子元素,或者说是input
系列输入框。
奇怪的钩子
这个钩子的作用要求是表单的子元素,听起来是不是有些奇怪?换句话说,这个useFormStatus()
的代码位置必须在form
里面。当然,放在form
标签外面,也不会报错,就是不正常工作而已。
官方文档:
而且,这是个来自react-dom
的钩子,而不是react
。
- [常用]
pending
为true
时,表示请求正在进行。 - [常用]
data
格式为FormData
,表示此次提交里表单的所有内容。 method
表示在提交时,所采用的请求方式,默认值为get
。貌似没有任何意义啊...action
这个是表单提交的脚本... 貌似也没有啥用。
使用范例
下面的例子中,和useFormStatus()
钩子共同工作的是个提交的按钮。它共有四个导出值,分别是:pending
,data
, method
, action
。
这个例子的效果就是:在提交按钮点击的时候,可以在局部获得全局表单的提交状态(pending
)和提交的数据...(个人总是觉得没啥意义,不知道为啥就被吹上天了呢...)

可能的问题
对应的form
不能设置method
,否则就会报错:
这都react
年代了,设置method
确实没有啥意义。但是,为啥还要保留这个选项呢?

相关文章


