Спасибо Пантера, ваше объяснение действительно ясно! Я планирую расширить компонент и разрешить модификацию некоторых реквизитов, поэтому я буду использовать ваш пример!

ичок в 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, и это новое состояние New. Поэтому я не понимаю, зачем мне нужна функция componentWillReceiveProps, чтобы функция рендеринга могла получать новые данные.

Я делаю что-то неправильно?

Ответы на вопрос(5)

Ваш ответ на вопрос