在多个页面上反应原生redux存储状态

时间:2017-12-07 00:40:06

标签: react-native redux

尝试学习redux并在传递状态时遇到问题以保持用户最新,主要示例 - 在第1页创建用户,导航到第2页,在用户上设置内容并导航回第1页。

必须为页面2创建一个动作,导航传递用户并为页面1创建一个动作来导航用户来回传递。

redux的正确用法是什么?

  1. 必须来回传递用户以保持应用同步

    { 
    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
    }
    
  2. 可以随时全局访问用户并使用操作调用进行更新

    {
     userDetails: {user: {...data}},
     page1: only page specific state, accesses this.props.userDetails.user
     page2: only page specific state, accesses this.props.userDetails.user
    }
    

1 个答案:

答案 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中的某些内容而更加清楚。