私はReact Dropzoneを使用しています(しかし、私は多くの異なる場所で同じ問題を抱えています)。これが私のメインコンポーネント内の関数である:React + Redux - アクションが終了するのを待ちますか?
onDrop(images) {
this.props.dispatch(setImages(images));
this.props.images.forEach(file => {
const reader = new FileReader();
reader.onload =() => // render images
reader.onerror =() => // display error
reader.readAsDataURL(file);
});
}
発送はちょうど状態に画像の配列をプッシュして、私は小道具にマップします。
残念なことにディスパッチには時間がかかり、上記の例でははundefined
です。タイムアウトが2秒程度あればうまく動作しますが、それは危険です。
どうすれば修正できますか?私は約束を試みましたが、彼らは誰が働いているのかわかりません。ほとんどが非同期要求のためだと思います。
は、私が試してみたが、それは働いたことはない - 私は私のコンポーネントからのアクションと、私がいた見つけることができるすべての例を派遣しています彼らが私のプロジェクトのやり方を複雑にしているので、私が必要としないと感じる外部のオブジェクトクリエイターを使用します。 – Wordpressor
setImagesは 'sync'です。ファイルをReduxストアに移動しているので、別の場所で使用することができます(心配する必要はありません)。 – Wordpressor
@ Li357 Reduxの 'dispatch'は' this.props'を同期的に更新しません。 'this.props'は、コンポーネントがレンダリングされたときに新しい値をとり、' images'がそこにあるときです。 – JLRishe