回到初始状态时,React-hook-form 不会将 isDirty 设置为 false
Posted
技术标签:
【中文标题】回到初始状态时,React-hook-form 不会将 isDirty 设置为 false【英文标题】:React-hook-form doesn't set isDirty to false when back to initial state 【发布时间】:2021-03-22 00:32:13 【问题描述】:在官方exemple for controlled inputs中,如果你修改了一个输入的值,然后将其改回初始值,isDirty
将被设置为true但不会被设置回false,dirtyField
将包含触摸的字段。
在较旧的exemple with uncontrolled inputs 中,我们的行为并不完全相同。事实上,如果你修改一个输入的值,然后将其改回初始值,isDirty
仍然是 falsy,但dirtyFields
不会包含被触摸的字段。
当表单回到初始状态时,isDirty
不应该设置回 false 并且dirtyFields
应该为空吗?
这是预期的行为吗?
控制器会破坏 formState 吗?
【问题讨论】:
我们在当前工作的项目中遇到了同样的问题。 【参考方案1】:isDirty
基于表单输入值与默认值。
https://react-hook-form.com/api#formState
确保在 useForm 中提供所有输入的默认值,所以挂钩 表格可以有一个单一的事实来源来比较表格是否是 脏。
这是一个输入不受控制的示例: https://codesandbox.io/s/bold-kapitsa-7m6o0?file=/src/App.tsx
带有受控输入的示例: https://codesandbox.io/s/dark-framework-op8jy?file=/src/App.tsx
【讨论】:
以上是关于回到初始状态时,React-hook-form 不会将 isDirty 设置为 false的主要内容,如果未能解决你的问题,请参考以下文章
react-hook-form:使用 onBlur 模式时验证不起作用
如何使用 react-hook-form 在 React 中存储无线电组的状态
android 显示部分布局然后上滑执行动画显示全部的view,再下滑回到初始状态怎么实现
react-hook-form 的 DefaultValues 未将值设置为 React JS 中的输入字段
使用 React-Hook-Form 和 YupResolver 时遇到此错误:尝试导入错误:“set”未从“react-hook-form”导出(导入为“o”)