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

これは役に立ちました。ここでの「問題」は、このフォームがユーザーデータであらかじめ埋められていることです。私はちょうどデータをダブルチェック(および正規化)したいです。ここでデータを正規化する方法を見つけました:https://github.com/erikras/redux-form/issues/1988#issuecomment-264558513。しかし、非同期の検証は機能しません...私が正しい場合、私はちょうど初期化アクションをディスパッチした後、私の装飾されたフォームでthis.props.asyncValidate()を実行することができますか? –

+0

それは正しい、はい。 –

+0

これはasyncValidator-functionをまったく実行しません...私が逃したかもしれないと考えることができるものは何ですか? –

1

私はinitialValuesを使用しながら、この同じ問題を抱えて、それらを正規化届かない:よう

formatを使用する代わりにnormalizeは、問題を解決するようだが、 formatは、実際にお店にあなたが持っているデータは変更されません。 normalizeそうしたい場合は、両方を使用してこれを修正するのが最適な方法でしょうか?

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

formatは、このことができますValue Lifecycle Hooks

希望の最初のものです:私は...だから

わからないんだけど、ここでは一例です!