Я очень новичок в реактиве. Я пытаюсь обновить состояние компонента React, используя вызов AJAX, который возвращает обещание объекта "Отложенное".
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 в их правильном синтаксисе, и я получаю ту же ошибку независимо.
Решение заключалось в связывании функции, поскольку это был анонимный обратный вызов:
componentDidMount: function() {
window.AlbumAPI.get_albums().then(function (response) {
console.log(response);
this.setState(response);
}.bind(this));
}
this
не относится к экземпляру вашего компонента.