当我使用initialValues设置formvalues时,我希望运行规范化和异步验证。我甚至尝试调度模糊和更改操作,但两者都不起作用:
dispatch(blur('userdata', 'user_zipcode', '3021LC'));
dispatch(change('userdata', 'user_zipcode', '3021LC'));
解决这个问题的正确方法是什么?
答案 0 :(得分:3)
对于规范化,使用非规范化数据进行初始化有点奇怪。我建议您查看Value Lifecycle,并可能结合使用parse
和format
函数。
至于运行异步验证,您可能使用无效数据进行初始化很奇怪,但是您可以在表单组件中调用this.props.asyncValidate()
function来触发异步验证。
这有帮助吗?
答案 1 :(得分:3)
我在使用initialValues时遇到同样的问题而没有将它们标准化:
使用format
代替normalize
似乎可以解决问题但是
format
实际上并没有改变您在商店中拥有的数据,如normalize
这样做,如果您想这样做,那么使用两者可能是解决此问题的最佳方法吗?我不确定......
所以,这是一个例子:
<Field component={MyCustomInputField} name="phone" format={normalizePhone} normalize={normalizePhone} label="Phone" type="tel" />
format
是Value Lifecycle Hooks
希望这有帮助!