当我使用initialValues设置我的formvalues时,我想运行规范化和异步验证。我甚至尝试派遣两个模糊和变化的行动,但都不起作用:正常化使用initialValues设置的redux-form值
dispatch(blur('userdata', 'user_zipcode', '3021LC'));
dispatch(change('userdata', 'user_zipcode', '3021LC'));
什么是解决这个问题的正确方法?
当我使用initialValues设置我的formvalues时,我想运行规范化和异步验证。我甚至尝试派遣两个模糊和变化的行动,但都不起作用:正常化使用initialValues设置的redux-form值
dispatch(blur('userdata', 'user_zipcode', '3021LC'));
dispatch(change('userdata', 'user_zipcode', '3021LC'));
什么是解决这个问题的正确方法?
至于规范化,使用非规范化数据进行初始化有点奇怪。我建议您查看Value Lifecycle,并可能使用parse
和format
函数的组合。
至于运行异步验证,您可能会用无效数据进行初始化也很奇怪,但您可以在表单组件中调用this.props.asyncValidate()
function来触发异步验证。
这有帮助吗?
我在使用initialValues有同样的问题,而不是让他们归:
使用format
,而不是normalize
似乎解决这一问题,但 format
实际上并没有改变你的店就像你有数据normalize
这样做,如果你想这样做,那么使用两者可能是解决这个问题的最好方法?我不知道......
所以,这里有一个例子:
<Field component={MyCustomInputField} name="phone" format={normalizePhone} normalize={normalizePhone} label="Phone" type="tel" />
format
是在Value Lifecycle Hooks
希望这有助于第一件事!
这确实有帮助:)。这里的“问题”是这个表单预先填充了userdata。我只是想仔细检查(和规范化)数据。我找到了一种正常化数据的方法:https://github.com/erikras/redux-form/issues/1988#issuecomment-264558513。然而,异步验证不起作用...如果我是正确的,我应该能够在我的装饰表单中运行this.props.asyncValidate()后,调度initialize-action,对吧? –
这是正确的,是的。 –
它根本不运行asyncValidator函数......任何你能想到的我都可能错过的东西? –