.bind(this)in coffee-react

时间:2015-07-20 10:05:51

标签: coffeescript reactjs

我正在使用qwest库来加载来自服务器的数据。

最初,我写道:

qwest.get("/api/getData")
    .then(function(response){
        this.setState({data: response})
    }.bind(this))

这很好用。

在coffeescript中我写道:

qwest.get("/api/getData")
    .then (response) -> 
          this.setState({data: response})
    .bind(this)

这不起作用。

我确定问题出在.bind(this)中,因为它会编译为:

qwest.get("/api/getData")
     .then(function(response) {
          return this.setState({
              conf: response
          });
     }).bind(this);

但是.bind()不在大括号前面。

我该如何解决这个问题?

1 个答案:

答案 0 :(得分:1)

只需在(response) -> ...附近添加一些括号:

qwest.get("/api/getData")
    .then ((response) -> 
          this.setState({data: response})
    ).bind(this)

编译为

qwest.get("/api/getData").then(function(response) {
  return this.setState({data: response});
}.bind(this));

这是期望的效果。