Я создаю собственное приложение реагирования и использую избыточность для обработки состояния.Я сталкиваюсь с ситуацией, когда один из моих контейнеров не обновляется немедленно при изменении состояния избыточности.
Контейнер:
...
class ContainerClass extends Component<Props, State> {
...
componentWillReceiveProps(nextProps: Object) {
console.log('WILL RECEIVE PROPS:', nextProps);
}
...
render() {
const { data } = this.props;
return <SubComponent data={data} />
}
}
const mapStateToProps = (state) => ({
data: state.data
};
export default connect(mapStateToProps)(ContainerClass);
Редуктор:
...
export default function reducer(state = initalState, action) => {
switch(action.type) {
case getType(actions.actionOne):
console.log('SETTING THE STATE');
return { ...state, data: action.payload };
...
...
...
В другом случайном компоненте я отправляю вызов с действием actionOne, которое, как я подтверждаю, распечатывает соответствующий файл console.log.Однако console.log в componentWillReceiveProps в контейнере не печатается.
Компонент, отправляющий вызов, является модальным, появившимся над контейнером, и автоматически закрывается после отправки вызова и состоянияобновлено.Странно то, что, хотя Контейнер не обновляется немедленно, если я перехожу на другую страницу и затем возвращаюсь на страницу Контейнера, состояние фактически обновляется.
РЕДАКТИРОВАТЬ: Исходное состояние:
const initialState: Store = {
data: []
}
И способ, которым я отправляю, находится в другом компоненте, который вызывается как новый модал (использующий реагирующую-навигацию) из Контейнера:
fnc() {
...
setData(data.concat(newDatum));
...
}
Где setData
и data
- это избыточное диспетчерское действие и часть хранилища, соответственно передаваемая на реквизиты из Контейнера (который имеет setData
и data
через mapStateToProps, показанные выше, и mapDispatchToProps, которые я не показывал).