【问题标题】:Replacing entire tree item in Redux with different reducer用不同的 reducer 替换 Redux 中的整个树项
【发布时间】:2017-02-23 10:03:39
【问题描述】:

给定以下 redux 状态树:

{
    app: {...},
    config: {...},
    page_data: {...}
}

如何根据用户所在的页面将page_data 的内容替换为整个单独的reducer?

例如,我可以拥有三个减速器userproductscompetitions。如果我从用户页面切换到产品页面,我希望显示 page_data 分支:

{
   page_data: {
       productPage: {...}
   }
}

没有提及user,因为我不想膨胀应用程序状态,也不需要产品页面上的数据。

注意:我使用 combineReducers 作为参考。

这可能吗?最好的方法是什么?

【问题讨论】:

  • 在产品页面上,dispatch 包含productPage 的操作,并在reducer 中使用productPage 创建新状态。
  • 这是否仍会在应用状态中包含 userPage?
  • 没有。你可以像这样创建一个全新的状态:Object.assign({ }, oldState, { page_data: { productPage: {... } } } )

标签: javascript reactjs redux react-redux


【解决方案1】:

对多个reducer 使用相同的名称肯定是错误的。不仅不支持,而且是错误的做法。您可以使用FLUSH_PAGE_DATA 操作来实现此目的。调度此操作将刷新所有 reducer 中的页面数据。它看起来像这样。

case 'FLUSH_PAGE_DATA':
    return {  }; 

然后根据您将在每个操作中传递的活动页面,您可以创建不同的页面数据结构。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2018-01-23
    • 2016-06-21
    • 2021-06-03
    • 2021-01-24
    • 2015-12-24
    • 2023-03-11
    • 1970-01-01
    相关资源
    最近更新 更多