[英]How do I access the state of another component via Redux store
假设我有两个组件,App 和 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 object,但它获得了旧的 state。 我调试发现它在 DialogBox 组件的减速器 function 之后被正确触发,但我得到了旧数据。
是否有任何优雅的方式来访问彼此的商店,或者 Redux 的理念是组件应该通过操作相互通信?
啊好吧。 我的错。
对的,这是可能的。 它有效。 我的错误是我试图在ComponentWillReceiveProps()
方法中使用它。 问题是,redux 商店似乎稍后会更新。 因此, ComponentWillReceiveProps()
将保存旧的 state。
因此, render()
和ComponentDidUpdate()
方法获取更新的 state。
这里的目的是帮助减少独立组件之间的多个操作调用。
例如,Dialog 不应该关心调用者在它自己关闭后应该做什么。 相反,调用者应该订阅 Dialog 的 state 来决定要做什么。
希望这对其他人有帮助。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.