rc-form-hooks icon indicating copy to clipboard operation
rc-form-hooks copied to clipboard

onValuesChange里如果要访问外层 state,拿不到最新的值

Open xiaobc1234 opened this issue 2 years ago • 3 comments


const [abnormalTypeOpts, setAbnormalTypeOpts] = useState([])

 const { getFieldDecorator, validateFields, errors, values, setFieldsValue } = useForm({
      onValuesChange: (values) => {
        if (values.orderType !== undefined) {
          setFieldsValue({
             type: abnormalTypeOpts[0] // abnormalTypeOpts拿到的一直是[]
          })
        }
      }
})

useEffect(() => {
 setAbnormalTypeOpts([{name: '测试'}])
});

xiaobc1234 avatar Oct 26 '22 08:10 xiaobc1234

感觉 useForm 需要第二个参数 deps

xiaobc1234 avatar Oct 26 '22 08:10 xiaobc1234

可以把onValuesChange里的逻辑放在useEffect里,然后依赖values

mushan0x0 avatar Oct 26 '22 08:10 mushan0x0

这种方式就没办法知道是哪个字段change了吧,我现在用ref缓存了 abnormalTypeOpts 值,倒是可以拿到。

xiaobc1234 avatar Oct 27 '22 02:10 xiaobc1234