用不同的减速器替换Redux中的整个树项目

Replacing entire tree item in Redux with different reducer

本文关键字:项目 替换 减速器 Redux      更新时间:2023-09-26

给定以下redux状态树:

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

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

例如我可以有三个还原剂user, products, competitions。如果我从用户页面切换到产品页面,我希望page_data分支显示:

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

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

注意:我使用combineReducers作为参考

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

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

case 'FLUSH_PAGE_DATA':
    return {  }; 

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