Это код. Не знаю, почему возникает проблема.setState (...): Может обновлять только смонтированный или монтажный компонент
class TeacherForm extends Component {
constructor({ data }) {
super();
this.isUpdatingForm = !! data;
this.state = Object.assign({ ... });
this.handleSubmit = this.handleSubmit.bind(this);
this.removeTeacher = this.removeTeacher.bind(this);
}
handleChange(value, field) {
this.setState({ shouldUpdate: true, [field]: value });
}
handleSubmit(e) {
e.preventDefault();
const { name, subjects, parttime, timing } = this.state;
if (this.isUpdatingForm) {
return update.call({
_id: this.props.data._id,
transaction: { name, subjects, parttime, timing },
},() => this.setState({ shouldUpdate: false }));
}
return add.call();
}
removeTeacher() {
return remove.call(this.props.data._id);
}
render() {
return (
<form onSubmit={this.handleSubmit}>
...
</form>
);
}
}
Ошибка брошена в методе handleSubmit в обратном вызове update.call
. Обычно это отображается, когда я вызываю removeTeacher
и обновляет список, и этот компонент размонтируется.
Он должен работать на подчиненной формы. Есть ли причина, почему он может работать после размонтирования. Если он отключен, форма никогда не будет отправлена, поэтому технически не будет работать. –
Update.call называется синхронно, когда компонент монтируется. Но похоже, что обратный вызов, который изменяет состояние, может запускаться после того, как компонент размонтирован. – Guig
. Вы можете добавить журналы в 1) Handle submit непосредственно перед update.call, 2) в обратном вызове 3) в компонентеWillUnmount и посмотреть, в каком порядке они получил вызов – Guig