我如何通过Redux存储访问另一个组件的状态

问题描述 投票:0回答:1

说我有两个组件,App和DialogBox;

所以我的React Store也有两个对象

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

export const store = createStore(rootReducer);

现在,当我必须打开对话框时,我叫dialogBoxActions.openDialog()而且,当我关闭对话框时,我会同时调用dialogBoxActions.closeDialog()appActions.notifyDialogClosed();

这可行,但是有一种更清晰的方法吗?

例如,我可以在App商店中使用state.dialog吗?这是我在应用程序中尝试过的]

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

ComponentWillReceiveProps确实获得了checkCloseDialog对象,但它获得了旧状态。我调试发现它在DialogBox组件的reducer功能之后被正确触发,但是我得到了旧数据。

是否有任何优雅的方式来访问彼此的商店,或者Redux的哲学是组件应该通过动作彼此进行通信?

reactjs redux
1个回答
0
投票

啊!好的,我不好。

是的,有可能。而且有效。我的错误是我试图在ComponentWillReceiveProps()方法中使用它。事实是,redux商店似乎稍后会更新。因此,ComponentWillReceiveProps()将保持旧状态。

因此,render()ComponentDidUpdate()方法获取更新状态。

这里的目的是帮助减少独立组件之间的多个操作调用。

例如,对话框不应该涉及调用者在关闭自身后应该做什么。相反,调用者应订阅Dialog的状态来决定要做什么。

希望这对其他人有帮助。

© www.soinside.com 2019 - 2024. All rights reserved.