请稍等 ...
×

采纳答案成功!

向帮助你的同学说点啥吧!感谢那些助人为乐的人

对于redux的action相关问题

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

正在回答

1回答

  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 回复 有任何疑惑可以回复我~
  • 提问者 weixin_慕神3292065 #1
    constan是用来存储一些不会更改的常量字段,用于将Action和reducer相互对应的type字段的信息,这样我就能很好的管理不同状态的检验了。
    回复 有任何疑惑可以回复我~ 2021-03-22 15:19:55
  • 我估计也差不多,这样处理没有问题,不过constant少拼了一个t。
    回复 有任何疑惑可以回复我~ 2021-03-23 11:49:42
问题已解决,确定采纳
还有疑问,暂不采纳
意见反馈 帮助中心 APP下载
官方微信