对于redux的action相关问题

来源:8-8 【redux重构】action 的拆分与统一

weixin_慕神3292065

2021-03-21

我有个疑惑,就是在一个项目中,用到redux,可能会涉及到多个状态需要在全局中维护管理,就会有多个reducer和Action需要管理;
那是否意味着store初始化的时候,是否需要将多个reudcer集合起来交给store初始化,至于Action也应该放在单独的文件夹里进行统一管理吧;
这样的话将Redux相关的逻辑从component中抽离出来,只需要调用一下即可完成dispath到store里;
另一个疑惑在于订阅store里的状态,状态错综复杂,仅仅是需要就调用store的api,这种显式调用感觉很麻烦,是否可以用一个中间件将组件和Redux连接起来,让中间件去帮我们处理订阅这件事情呢?
下面是我对redux整体的架构,如图:
图片描述

写回答

1回答

阿莱克斯刘

2021-03-22

  1. “是否需要将多个reudcer集合起来交给store初始化”?

    这个答案是肯定的,多个reudcer集合使用combineReducer,而store必须通过reducer初始化并赋予了默认值以后才能使用。

  2. “至于Action也应该放在单独的文件夹里进行统一管理吧”

    我个人不觉得把action和reducer拆分放在两个不同的位置能获得任何好处;然而,按照课程的架构,以业务模块的方式来组织文件夹结构反而可以让整个项目的业务流程更加明确、架构更加清晰。当然reducer和action分开存放的架构也没有问题,不过我现在已经放弃这种架构了。

  3. “这样的话将Redux相关的逻辑从component中抽离出来,只需要调用一下即可完成dispath到store里”

    这一句话反复看了好几遍,还是不太理解,能不能举个例子?

  4. “订阅store里的状态,状态错综复杂,仅仅是需要就调用store的api,这种显式调用感觉很麻烦”

    我也觉得很麻烦,但是这就是redux的设计模式。如果实在是嫌麻烦,我们也可以考虑把redux与MVC两种模式混合起来,redux处理需要跨组件的状态管理,而MVC仅处理当前页面数据。其实这种说法有点大逆不道,因为几乎我认识的架构师都不建议这样处理,他们认为会增加系统的不确定性,但我持不同的看法。

  5. “是否可以用一个中间件将组件和Redux连接起来,让中间件去帮我们处理订阅这件事情呢?”

    似乎没有听说过这样处理redxu的方法,如果你有想法,可以告诉我如何处理。

  6. 架构图

    你的架构没有问题,但是contan.ts是做什么用的?


1
2
阿莱克斯刘
回复
weixin_慕神3292065
我估计也差不多,这样处理没有问题,不过constant少拼了一个t。
2021-03-23
共2条回复

React18 系统精讲 结合TS打造旅游电商平台

React18 精讲 + 结合 TS 实战 + 热门业务开发,获取必备技能

1993 学习 · 1015 问题

查看课程