Как мне получить доступ к состоянию другого компонента через хранилище Redux - PullRequest
0 голосов
/ 27 мая 2020

Допустим, у меня есть два компонента: приложение и DialogBox;

, поэтому в моем хранилище реакций также есть два объекта

const rootReducer = combineReducers({
    app: appReducer,
    dialog: dialogReducer
});

export const store = createStore(rootReducer);

Теперь, когда мне нужно открыть диалоговое окно, я вызываю dialogBoxActions.openDialog() И, когда я закрываю диалоговое окно, я вызываю dialogBoxActions.closeDialog(), а также appActions.notifyDialogClosed();

Это работает, но есть ли способ сделать это более понятным способом?

Например, могу ли я использовать state.dialog из магазина в приложении? Это то, что я пробовал в приложении

const mapStateToProps = (state) => {
    return {
        checkCloseDialog: state.dialog.openDialog
    }
}

ComponentWillReceiveProps действительно получает объект checkCloseDialog, но получает старое состояние. Я отлаживал, чтобы узнать, что он запускается правильно после функции редуктора компонента DialogBox, но я получаю старые данные. друг друга через действия?

1 Ответ

0 голосов
/ 29 мая 2020

А! Ладно, плохо.

Да, возможно. И это работает. Моя ошибка заключалась в том, что я пытался использовать его внутри метода ComponentWillReceiveProps(). Дело в том, что, похоже, магазин redux будет обновлен позже. Таким образом, ComponentWillReceiveProps() будет содержать старое состояние.

Следовательно, методы render() и ComponentDidUpdate() получают обновленное состояние.

Цель здесь - помочь уменьшить количество вызовов нескольких действий между независимые компоненты.

Например, Dialog не должен заботиться о том, что вызывающий должен делать после того, как он закрывается. Вместо этого вызывающий должен подписаться на состояние диалога, чтобы решить, что делать.

Надеюсь, это поможет другим.

...