在this.setState()
范围内使用$.get
时,我收到以下错误
未捕获的TypeError:undefined不是函数
它在$.get
范围之外正常工作。
我该如何解决这个问题?
$.get(APIURL, function (data) {
this.setState({resdata: "This is a new state"});
});
我不确定将jQuery AJAX替换为其他小型AJAX库的最佳做法是什么。
答案 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));
},