0
Base64エンコードされた画像を文字列配列に追加しようとしています。Javascriptのbase64エンコード関数が未定義を返します
<FormControl
type="file"
values={this.state.files}
multiple
onChange={this.addImage.bind(this)}
/>
私は、この関数の呼び出しています:
addImage(event) {
var newArr = [];
for(var i=0; i<event.target.files.length; i++) {
newArr.push(this.getBase64(event.target.files[i])));
}
this.setState({ files: newArr });
}
画像を符号化する機能は次のようになります。
getBase64(file) {
var reader = new FileReader();
reader.onloadend = function() {
return reader.result
}
reader.readAsDataURL(file);
}
反応し、ブートストラップのFormControlで作成したファイルの入力フォームを使用してaddImage()関数はgetBase64()関数を呼び出します。戻り値はで、未定義の値はです。これは、getBase64()関数の実行時から発生したと考えられます。 reader.resultを吐き出すためにconsole.log行を追加すると、base64文字列がコンソールに正しく出力されますが、戻り値は同じですが、明らかに同じです。
ここで何が起こっているのですか。実際のbase64文字列が正しく返される方法を教えてください。
から非同期に返されたあなたが値を取得する
Promise.all()
またはasync/await
を使用することができ、あなたは右、 'getBase64'機能には' return'はありません見ることができますか? –@JaromandaX 'getBase64'関数内の' loadend'イベントハンドラ内に 'return'ステートメントがあります – guest271314
@ guest271314 - ' getBase64'関数には 'return'がありません。 –