React Hook Form 中如何动态设置默认值?
我用 React Hook Form 做一个编辑表单,想根据接口返回的数据动态设置默认值,但 useForm 的 defaultValues 似乎只在初始化时生效一次,后续数据变了也不更新。试过用 reset(),但总感觉哪里不对。
比如下面这样写,user 初始是 null,等异步加载完后 setDefaultValues 没反应:
const { control, reset } = useForm({
defaultValues: {
name: user?.name || '',
email: user?.email || ''
}
});
useEffect(() => {
if (user) {
reset({ name: user.name, email: user.email });
}
}, [user]);
如果你非要渲染表单然后用 reset,记得把 reset 放进依赖数组里,不然会有闭包坑: