2016-05-06 10 views
1

私はredux-form固有の質問があります。非表示の入力フィールドでredux-formの非同期ぼかし検証を使用できますか?

私は自分のフォームの隠し入力があります。

<input type="hidden" {...field} /> 

をして、サーバーに要求を行うことによって、いくつかの非同期検証を実行したいと思います。これを達成する最もエレガントな/適切な方法は何ですか?私は、非同期ぼかし検証を検討してきました。これは、隠れた入力がぼかしイベントを引き起こすことができないようであるという事実以外は正しいことです。尋ねるようなものである

if (action.type === ActionTypes.MY_EVENT) { 
    MyModule.asyncValidate({ 
     myField: store.getState().form.myForm.myField.value, 
    }).catch((error) => { 
     store.dispatch(stopAsyncValidation('myForm', error)); 
    }); 
    } 

答えて

2

はうん、隠し入力をぼかしたときに何かをする方法を求めて:

EDIT

は、私はReduxのに次のミドルウェア・コードをフックして欲しかったものを手に入れることに成功しあなたの水が乾燥しているとき何かをする方法。

隠し入力の概念は実際にはredux-formにはありません。隠れた入力は、フォームを提出するための古いHTML形式に基づいています。 redux-formの「隠れた入力」は、fieldsリストに表示されるフィールドです(したがって、送信されます)が、入力には表示されません。私はfieldsのリストが['id', 'name', 'email']であるプライマリキーに対してこれを行い、nameemailの入力だけをレンダリングしますが、3つはすべてサブミットされます。

レンダリングされた(隠されていない)フィールドがぼやけたときに、非同期検証に渡されるすべてのフィールド(レンダリングされていないフィールドも含む)に対して、関数。上記の例では、次のようなものが動作します。

reduxForm({ 
    form: 'myForm', 
    fields: ['id', 'name', 'email'], 
    asyncValidate: doServerSideAsyncValidation, 
    asyncBlurFields: ['name', 'email'] // both rendered fields will trigger async validation 
}) 
+0

Thanks @ erik-r。検証は、ファイルが正常にアップロードされたかどうかを確認するためのものです。検証する前に別のフィールドが表示されるのを待ってはいけません(特に、ユーザーの操作によってアップロードがトリガーされるため)。私は私の質問を編集して、私が働くことができたことをあなたに見せてくれるでしょう。 – rouan

+0

ああ、DOM要素の削除に関するヒントをありがとう! – rouan

関連する問題