У меня есть простое приложение React Redux CRUD, которое прекрасно работает при редактировании записи с формой при использовании метода жизненного цикла componentWillReceiveProps.Недавно хотел заменить его методом componentWillReceiveProps, который работал нормально, то есть форма редактирования действительно вытащила нам данные из поста, который нужно отредактировать, но теперь форма недоступна для редактирования.Больше ничего не могу записать в форму.Вот предыдущий код, который работал:
state = {
id: '',
title: '',
body: '',
errors: {},
};
componentWillReceiveProps(nextProps, nextState) {
const { id, title, body } = nextProps.post;
console.log(`Next Props in Will Receive Props: ${nextProps.post.title}`);
this.setState({
id,
title,
body,
});
}
Этот код я пытаюсь заменить приведенным выше кодом:
static getDerivedStateFromProps(nextProps, prevState) {
const { id, title, body } = nextProps.post;
if (nextProps.post !== prevState.post) {
return {
id,
title,
body,
};
}
return null;
}
А вот код формы:
render() {
const { id, title, body, errors } = this.state;
return (
<div className="add-post-from-container animated slideInLeft pt-5">
<div className="card mb-3">
<div className="card-header text-danger">
<strong>Edit Post</strong>
</div>
<div className="card-body">
<h5>Article ID: {id}</h5>
<form onSubmit={this.onSubmit.bind(this)}>
<div className="">
<InputGroup
name="title"
type="text"
placeholder="Enter Post Title"
value={title}
onChange={this.onChange}
error={errors.title}
/>
<div className="row">
<div className="col-md-12">
<InputTextarea
name="body"
value={body}
onChange={this.onChange}
error={errors.body}
placeholder="Enter Content"
/>
</div>
</div>
<div className="mx-auto">
<input
type="submit"
className="form-control form-control-lg btn btn-light mt-2"
value="Update Post"
/>
</div>
</div>
</form>
</div>
</div>
</div>
);
Пожалуйста, помогите мне понять, в чем я здесь ошибаюсь.Я довольно новичок в React / Redux.