2016-11-28 73 views
2

当我使用initialValues设置我的formvalues时,我想运行规范化和异步验证。我甚至尝试派遣两个模糊和变化的行动,但都不起作用:正常化使用initialValues设置的redux-form值

dispatch(blur('userdata', 'user_zipcode', '3021LC'));

dispatch(change('userdata', 'user_zipcode', '3021LC'));

什么是解决这个问题的正确方法?

回答

2

至于规范化,使用非规范化数据进行初始化有点奇怪。我建议您查看Value Lifecycle,并可能使用parseformat函数的组合。

至于运行异步验证,您可能会用无效数据进行初始化也很奇怪,但您可以在表单组件中调用this.props.asyncValidate() function来触发异步验证。

这有帮助吗?

+0

这确实有帮助:)。这里的“问题”是这个表单预先填充了userdata。我只是想仔细检查(和规范化)数据。我找到了一种正常化数据的方法:https://github.com/erikras/redux-form/issues/1988#issuecomment-264558513。然而,异步验证不起作用...如果我是正确的,我应该能够在我的装饰表单中运行this.props.asyncValidate()后,调度initialize-action,对吧? –

+0

这是正确的,是的。 –

+0

它根本不运行asyncValidator函数......任何你能想到的我都可能错过的东西? –

1

我在使用initialValues有同样的问题,而不是让他们归:

使用format,而不是normalize似乎解决这一问题,但 format实际上并没有改变你的店就像你有数据normalize这样做,如果你想这样做,那么使用两者可能是解决这个问题的最好方法?我不知道......

所以,这里有一个例子:

<Field component={MyCustomInputField} name="phone" format={normalizePhone} normalize={normalizePhone} label="Phone" type="tel" />

format是在Value Lifecycle Hooks

希望这有助于第一件事!