Я новичок в React/Redux и имею проблему с состоянием.
TrajectContainer.jsx
class TrajectContainer extends React.Component {
constructor(props) {
super(props);
this.state = {
trajects: props.trajects,
onClick: props.onClick
};
}
componentWillReceiveProps(nextProps) {
console.log('componentWillReceiveProps', nextProps);
this.setState(nextProps);
}
render() {
// When the componentWillReceiveProps is not present, the this.state will hold the old state
console.log('rerender', this.state);
return (<div className="col-md-6">
<h2>Trajects</h2>
<button className="btn btn-primary" onClick={this.state.onClick}>Add new Traject</button>
{this.state.trajects.map(traject => <Traject traject={traject} key={traject.name}/>)}
</div>)
}
}
const mapStateToProps = function (store) {
console.log('mapToStateProps', store);
return {
trajects: store.trajects
};
};
const mapDispatchToProps = function (dispatch, ownProps) {
return {
onClick: function () {
dispatch(addTraject());
}
}
};
export default connect(mapStateToProps, mapDispatchToProps)(TrajectContainer);
Когда редуктор возвращает новое состояние, компонент будет переписываться с новыми данными.
Однако: если я удаляю функцию componentWillReceiveProps, функция render() имеет старое состояние.
Я проверил данные, полученные в mapStateToProps, и это новое новое состояние. Поэтому я не понимаю, зачем мне нужна функция componentWillReceiveProps, чтобы функция рендеринга получала новые данные.
Я делаю что-то неправильно?