2016-12-16 10 views
6

私はredux-formフィールドを介して接続されたFileUploadコンポーネントを持っています。入力フィールドでファイルが選択されると、選択されたファイルをbase64文字列としてinput.onChangeおよびinput.onBlurを呼び出します。非同期検証後のRedux-Formファイルのアップロード

asyncValidator redux-formオプションを使用してイメージの寸法を検証しています。非同期検証が完了した後、ファイルをマイサーバにアップロードします。

afterAsyncValidationフックが文書化されていないようです。これを還元型で達成する最善の方法は何ですか?

答えて

1

redux-formは、お客様のデータがサーバに保存されるという考えで設計されました。

ただし、非同期検証後に自分の.then()句を置くのを止めることはありません。このようなもの?

// async function you already have that is looking at your 
// picture field and rejecting the promise with errors 
import validateDimensions from './validateDimensions' 

// async function to upload the image 
import upload from './uploadImage' 

const MyForm = reduxForm({ 
    form: 'myForm', 
    asyncValidate: values => 
    validateDimensions() 
     .then(() => { 
     // we know validation passed 
     upload(values.prettyPicture) 
     //^not "return upload(values.prettyPicture)" to let this async 
     // validation promise resolve and do upload asynchronously 
     // after it has resolved 
     }) 
    }, 
    asyncBlurFields: [ 'prettyPicture' ] 
})(MyForm) 
+0

私のフォームに別の非同期検証を追加するとします。これにより、すべての非同期検証が再度実行されないため、ファイルが再度アップロードされる可能性がありますか? – eNddy

+0

はい、これは 'asyncValidate'の意図された使用ではありません。 @ErikR。 –

+0

それは私たちが古いブラウザをサポートできるようにターゲット 'iframe'でHTMLを実行するための方法ですか? – Andy

関連する問題