Реагировать неопределенным методом Ajax с использованием отложенного объекта [дубликата]

0

Я очень новичок в реактиве. Я пытаюсь обновить состояние компонента 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 в их правильном синтаксисе, и я получаю ту же ошибку независимо.

  • 0
    Внутри обратного вызова this не относится к экземпляру вашего компонента.

1 ответ

1

Решение заключалось в связывании функции, поскольку это был анонимный обратный вызов:

componentDidMount: function() {
     window.AlbumAPI.get_albums().then(function (response) {
         console.log(response);
        this.setState(response);
    }.bind(this));
}

Ещё вопросы

Сообщество Overcoder
Наверх
Меню