Ответ 1
Второй (необязательный) параметр 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)
);
}
На данный момент маршрутов нет. Может ли кто-нибудь помочь мне решить эту проблему?
Второй (необязательный) параметр setState
- это функция обратного вызова, а не строка. Вы можете передать функцию, которая будет выполнена после завершения операции.
Вы фактически вызываете getInitialState
вместо предоставления ссылки на собственно функцию в строке return this.setState(this.getInitialState(), 'JSON');
, а второй аргумент никогда не должен быть чем-то вроде функции обратного вызова.
this.setState
ожидает либо функцию, которая должна возвращать объект состояния как один аргумент, либо объект для объединения текущего состояния с (плюс необязательно обратный вызов в качестве второго аргумента для запуска после состояния). Таким образом, либо вы предоставляете только функцию, которая возвращает новое состояние, либо вы предоставляете объект, в котором текущее состояние должно быть объединено с первым аргументом, и обратный вызов, который будет выполнен после того, как состояние будет установлено как второй аргумент.
Либо this.setState(this.getInitialState)
, либо this.setState(this.getInitialState())
или this.setState(newState, callback)
.
Проверьте подпись в API здесь.