我对React很新。我试图使用AJAX调用更新React组件的状态,该调用返回Deferred对象的promise。
componentDidMount: function() {
window.AlbumAPI.get_albums().then(function (response) {
console.log(data);
this.setState(data);
});
以及组件调用的方法:
window.AlbumAPI = {
get_albums: function() {
var deferred = new $.Deferred();
$.ajax({
url: '/albums',
}).done(function(res) {
deferred.resolve(res);
});
return deferred.promise();
}
};
控制台日志正在返回正确的对象,正如我所期望的那样,一个JS数组。但是SetState()为以下行抛出一个未定义的方法:
.done(function(res)
在组件中,我尝试以正确的语法使用.when和.done,无论如何都会遇到相同的错误。
答案 0 :(得分:1)
解决方案是绑定函数,因为它是一个匿名回调:
componentDidMount: function() {
window.AlbumAPI.get_albums().then(function (response) {
console.log(response);
this.setState(response);
}.bind(this));
}