尝试学习redux并在传递状态时遇到问题以保持用户最新,主要示例 - 在第1页创建用户,导航到第2页,在用户上设置内容并导航回第1页。
必须为页面2创建一个动作,导航传递用户并为页面1创建一个动作来导航用户来回传递。
redux的正确用法是什么?
必须来回传递用户以保持应用同步
{
page1: user: {...data}} set user details,
page2: user: {...data}} passed user details but able to edit user
details and able to go back to page1
}
可以随时全局访问用户并使用操作调用进行更新
{
userDetails: {user: {...data}},
page1: only page specific state, accesses this.props.userDetails.user
page2: only page specific state, accesses this.props.userDetails.user
}
答案 0 :(得分:1)
通常情况下,您只需将任何需要用户信息的组件订阅到Redux商店,通常使用react-redux
。在page2
中,您发送操作以修改商店中的用户,然后当reducer处理这些修改时,page1
可以使用新值进行更新。
用于改变用户的操作可能如下所示:
{
type: 'SET_USER_EMAIL',
email: 'foo@wombat.com'
}
您dispatch
page2
组件中的user
行动。它将在商店中switch (action.type) {
case 'SET_USER_EMAIL':
return {
...state,
email: action.email
}
}
对象的reducer中收到:
$payload = array (
"query" => array(
array(
"date" => "11/01/2017...12/31/2017",
"other sub key" => "other sub value"
)
),
"other main key" => array(
array(
"other sub key" => "other sub value",
etc...
)
)
);
如果这两个页面都订阅了Redux商店,那么它并不是真正的来回传递"用户价值的大小,以及在商店更改时通知两个页面,并且可以根据这些更改自行更新。我想你是说每个组件都会侦听到商店,并且可以在更新时采取行动。
导航是一个有点独立的问题,尽管它当然可以使用Redux。我觉得你可能会因为重新审视core concepts中的某些内容而更加清楚。