$ .get中的setState

时间:2014-11-27 16:29:55

标签: javascript jquery reactjs

this.setState()范围内使用$.get时,我收到以下错误

  

未捕获的TypeError:undefined不是函数

它在$.get范围之外正常工作。

我该如何解决这个问题?

$.get(APIURL, function (data) {
   this.setState({resdata: "This is a new state"});
});

我不确定将jQuery AJAX替换为其他小型AJAX库的最佳做法是什么。

2 个答案:

答案 0 :(得分:11)

您可以保存对外this

的引用
var that = this;
$.get(APIURL, function (data) {
   that.setState({resdata: "This is a new state"});
});

或使用$.proxy

$.get(APIURL, $.proxy(function (data) {
   this.setState({resdata: "This is a new state"});
}, this));

你在函数中使用的this通常是指jqXHR对象,ref http://api.jquery.com/jquery.ajax/

答案 1 :(得分:2)

您可以使用bind(this),就像在React Documentation:

中一样

https://facebook.github.io/react/tips/initial-ajax.html

以下是一段代码:

componentDidMount: function() {
    this.serverRequest = $.get(this.props.source, function (result) {
      var lastGist = result[0];
      this.setState({
        username: lastGist.owner.login,
        lastGistUrl: lastGist.html_url
      });
    }.bind(this));
  },