2016-11-28 20 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

希望這有助於第一件事!