将Redux商店分割成片的更清洁策略是什么?

时间:2019-03-29 01:19:13

标签: reactjs react-redux

我已经看到了将redux存储拆分为片的不同策略(每个片都有一个状态,reduces,action和actionCreators),我想知道每种策略的优缺点。

基于后端资源的拆分

在宁静的世界中,后端模型被称为资源。由于前端允许用户与这些类的对象进行交互,因此我们可能具有特定于每种资源的redux slices。

示例: 资源Post的切片,其状态由诸如postsselectedPost等键组成。

基于前端子模块的拆分

如果您将子模块视为应用程序的独立分区,则每个子模块在rootStore中都需要有自己的命名空间。

示例: 配置文件,设置和仪表板子模块的一部分

由应用程序页面(或路由)分隔

每个带路线的页面都有自己的切片。

示例: 用户设置页面,组织设置页面,通知设置页面,主要设置页面

我还想知道是否还有其他我不知道的策略。

2 个答案:

答案 0 :(得分:1)

我按资源划分数据,毕竟我们在这里讨论数据时,我们只需要知道数据作用域即可。不需要知道哪个页面正在使用它,因为这些数据可以以一对多的关系使用。

这样,当您需要数据时,您只需要考虑所需的数据,别无其他,因此您给的第一个选择是最好的选择,而其他选择则无济于事。 Redux使您可以访问全局范围的状态。如果您通过路由或模块进行管理,则现在需要记住哪个路由或模块正在使用哪些数据来检索数据,从而为您的应用添加了额外的复杂性层。

答案 1 :(得分:0)

除了您在此处指出的策略,我没有其他策略。但是,我遵循的策略是您在下面提到的前两个方法的混合。通过BE资源和FE子模块拆分化简的原因非常简单,因为它们都形成了功能状态。

如果我正确理解了您的问题,那么,您不应完全依赖BE资源来确定管理功能状态的策略,因为您将需要内部灵活性来控制组件状态(标志,计数器,表单值)等)。因此,策略2在这里很方便。除了您肯定使用流向相同组件的BE信息外。