2017-12-17 21 views
0

私はReactとReduxを併用しています。 は、私はアクションファイルは、UploadFileAction.jsと呼ばれ、ここにコードされています:React Redex Read .txtファイル

export const selectFile = (file) => { 
    return { 
     type: 'FILE_SELECTED', 
     payload: file 
    } 
}; 

fileパラメータアップロードされたファイルが含まれています。私は私が私の減速ないペイロードとしてファイル全体へのファイルの内容を送信したい

をやりたい

は...

私が試してみました何

let fileReader = new FileReader(); 
fileReader.readAsText(file, "UTF-8"); 
fileReader.onload = function(fileLoadedEvent){ 
    let textFromFileLoaded = fileLoadedEvent.target.result; 
} 

Now th e textFromFileLoaded変数にファイルテキストが含まれていますが、​​に渡すことができませんでした。

+1

あなたはこのアクションを派遣し、あなたが送信しているfile' '何されている場合?あとでコードplz – frankies

+0

を入れてください。これは非同期アクションなので、filereaderイベント "onload"で解決される約束を返すべきです。 react-reduxで非同期呼び出しを接続する方法を調べる必要があります。もう一度... docs: https://redux.js.org/docs/advanced/AsyncActions.html – frankies

+0

私はコンテナファイルにこのアクションをディスパッチしていますが、私は非同期コールを接続する必要があります。 – DOEE

答えて

0

おそらく私は誤解していますが、ファイルのテキストを含むアクションの結果をリデューサに渡す必要があります。だから、それは次のようになります。

let fileReader = new FileReader(); 
fileReader.onload = function(fileLoadedEvent){ 
    dispatch(selectFile(fileLoadedEvent.target.result)); 
} 
fileReader.readAsText(file, "UTF-8"); 

さらに、このトピックに読んで:https://redux.js.org/docs/basics/Actions.html

+0

私はそれが理にかなっていると思います! – frankies

+0

いいえ私のコンテナに私のアクションをディスパッチしました。ここで私のファイルコンテンツを私のレデューサーに渡すだけです。 – DOEE

+0

ああ、私はそれを編集しました。 readAsText()の前に定義されたonloadが必要です。ちょうど別の推測 –