2016-03-02 93 views
0

說我有這個click處理程序:處理從承諾中的onClick反應

<button type="submit" onClick={this.handleSubmit} value="Submit">Submit</button> 

單擊處理程序啓動此:

handleSubmit: function (e) { 
      e.preventDefault(); 
      // TODO: do something with -> this.state.file 

      var data = new FormData(); 
      data.append('file-0', this.state.file); 


      return $.ajax({ 
       type: 'POST', 
       url: 'http://localhost:4000/upload', 
       data: data, 
       headers: { 
        'x-baymax-mapping-type': this.props.mappingType 
       }, 
       cache: false, 
       contentType: false, 
       processData: false, 
      }); 

     }, 

是有辦法來處理由$就返回的承諾?

+1

你有沒有嘗試將'.then()'鏈接到'$ .ajax()'調用? – rguerrettaz

回答

1

這裏有一個簡單的答案

handleSubmit(event) { 
    event.preventDefault(); 
    var xhr = $.ajax(...); 
    xhr.done(data => this.setState(...)); 
    xhr.fail(err => /* handle error */); 
} 

芹苴,如果你有很多東西,異步處理,僅出這種變得混亂快捷。查看flux architecture以獲得與React更加緊密結合的流量控制。 Redux是一個非常流行的實現類似Flux的模式,我發現它非常易於使用。

btw,你好亞歷克斯。