React.js: вы вызвали `setState` с обратным вызовом, который не может быть вызван

Это мой кусок кода, который работает правильно (добавляет записи), но выдает ошибку после добавления:

Непринятая ошибка: инвариантное нарушение: enqueueCallback (...): вы вызвали setProps, replaceProps, setState, replaceState или forceUpdate с обратным вызовом, который не может быть вызван.

handleSubmit: function(e) {
    e.preventDefault();
    return $.post('', {page: this.state},
      function(data) {
        this.props.handleNewPage(data);
        return this.setState(this.getInitialState(), 'JSON');
      }.bind(this)
    );
  }

На данный момент маршрутов нет. Может ли кто-нибудь помочь мне решить эту проблему?

Ответ 1

Второй (необязательный) параметр setState - это функция обратного вызова, а не строка. Вы можете передать функцию, которая будет выполнена после завершения операции.

Ответ 2

Вы фактически вызываете getInitialState вместо предоставления ссылки на собственно функцию в строке return this.setState(this.getInitialState(), 'JSON');, а второй аргумент никогда не должен быть чем-то вроде функции обратного вызова.

this.setState ожидает либо функцию, которая должна возвращать объект состояния как один аргумент, либо объект для объединения текущего состояния с (плюс необязательно обратный вызов в качестве второго аргумента для запуска после состояния). Таким образом, либо вы предоставляете только функцию, которая возвращает новое состояние, либо вы предоставляете объект, в котором текущее состояние должно быть объединено с первым аргументом, и обратный вызов, который будет выполнен после того, как состояние будет установлено как второй аргумент.

Либо this.setState(this.getInitialState), либо this.setState(this.getInitialState()) или this.setState(newState, callback).

Проверьте подпись в API здесь.