我正在使用react hook表单实现一个表单,该表单有两个选择字段country
和states
。第二个字段根据第一个字段中的选择更改选项。
请参阅以下沙箱了解更多详细信息
创建/提交记录工作正常。
问题是:
在编辑中,当我使用setValue()预填充表单中的值时,它不会在UI上设置第二个下拉列表(下面沙箱中的state
select)值,但它会显示它已将值设置为字段(请参见控制台中的字段state
)。
[程式码沙箱] https://codesandbox.io/s/angry-murdock-h0lbsp?file=/src/App.js
重现步骤:
1.在浏览器中打开此沙箱。
1.单击SET ALL VALUES
按钮。
1.查看状态选择中的空白值
此外,填充这样的表单(即defaultsValues
或useEffect
)的最佳方式是什么?
我在这里错过了什么,所以把它给这里的Maven。谢谢你的时间。
1条答案
按热度按时间fdbelqdn1#
您遇到的问题与
setValue
有关。此函数在大多数情况下不会触发重新渲染。您可以使用reset
来代替。https://react-hook-form.com/api/useform/reset
此外,如果您希望在没有任何用户交互的情况下填写表单,请在
useEffect
中使用reset
,并使用适当的依赖项。最后,如果你想让它们只具有初始值而不是
undefined
,设置defaultValues
。官方文件中也建议这样做:重要提示:应提供正确的默认值并避免undefined。undefined保留用于从内联defaultValue/defaultChecked回退到挂钩级别defaultValues。undefined值与作为默认状态的受控组件冲突
https://react-hook-form.com/api/useform