2016-03-02 35 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,你好亚历克斯。