React Hook Form 中如何动态控制字段的 required 状态?
我在用 React Hook Form 做一个表单,有个下拉选项会影响另一个输入框是否必填。我试过用 watch() 监听下拉值,然后在 useEffect 里调用 trigger(),但 required 规则好像没更新。
比如当选择“其他”时,下面的备注框才需要必填。现在的问题是,即使我动态改了 required 的值,表单验证还是按初始状态走,根本没变。是不是我用错了方法?
const { register, watch, trigger, formState: { errors } } = useForm();
const type = watch('type');
// 在 JSX 里这样写
<input {...register('remark', { required: type === 'other' })} />
setValue更新字段的规则不太靠谱。建议把条件验证逻辑写在validate函数里,这样每次输入都会重新计算差不多就行,这方法我试过好使。别再折腾 trigger 了,太累人。