2017-01-11 14 views
0

どのようにしてAxiosイベントの結果を状態に追加できますか?Axios設定イベントで状態を設定する

:axiosポストのコンフィグ onUploadProgressイベントに

  1. axios POSTメソッド
  2. セット状態でのファイルのアップロードは
  3. をmetodこれが私のコードで、次のエラー

enter image description here

を受信

export default class StudioAlbumUpload extends Component{ 

    constructor(props){ 
     super(props); 

     this.state = { prog: 0 }; 
    } 

    onDrop(acceptedFiles, rejectedFiles){ 
     var files = acceptedFiles; 
     var data = new FormData(); 
     data.append('file', files[0]); 

     var config = { 
      onUploadProgress: function(progressEvent) { 
       var percentCompleted = Math.round((progressEvent.loaded * 100)/progressEvent.total); 
       //How set state with percentCompleted? 
       this.setState({prog: percentCompleted}); 
      } 
     }; 

     axios.post(`${ROOT_URL}/api/studio/album/upload`, data, config) 
      .then((response) => console.log('hello')) 
      .catch(error => console.log(error)); 
    } 

    render() { 
     return (
      <div> 
       {this.state.prog} 
       <Dropzone onDrop={this.onDrop} maxSize={5120} accept={'image/*'}> 
        <div>Try dropping some files here, or click to select files to upload.</div> 
       </Dropzone> 
      </div> 
     ); 
    } 
} 
+0

を結合詳細については、こちらをご覧くださいここhttps://developer.mozilla.org/en/docs/Web/JavaScript/Reference/Functions/Arrow_functions

変更関数コンテキスト

矢印の機能についての詳細を学びますあなたはsetStateを使うことができます。あなたが実際に見ているエラーは何ですか?コンソールエラーはありますか? – ggilberth

+0

@ahmetあなたが得ているエラーは何ですか? – semuzaboi

+0

コードの書式設定を修正して – Eldelshell

答えて

1

アロー機能

あなたonUploadProgress機能は、独自のthisコンテキストを持っています。しかし、コンポーネントthis.setStateを使用する必要があります。したがって、=>arrow機能を使用するほうが良いでしょう。コンテキストにはバインドされず、以前のthisコンテキストが使用されています。

var config = { 
    onUploadProgress:(progressEvent) => { 
     var percentCompleted = Math.round((progressEvent.loaded * 100)/progressEvent.total); 
     this.setState({prog: percentCompleted}); //How set state with percentCompleted? 
    } 
}; 

あなたはthisのコンテキストをバインドする必要があり、ここでhttps://developer.mozilla.org/en/docs/Web/JavaScript/Reference/Operators/this#The_bind_method

var config = { 
    onUploadProgress: function(progressEvent) { 
     var percentCompleted = Math.round((progressEvent.loaded * 100)/progressEvent.total); 
     this.setState({prog: percentCompleted}); //How set state with percentCompleted? 
    }.bind(this) 
}; 
関連する問題