react-redux 业务逻辑写在哪里

别说谁变了你拦得住时间么 提交于 2020-03-17 20:45:16

哪些东西应该放在reducer里面

不要复杂化ruducer

只有需要共享的才放进去

域数据 

 

1:不要复杂化reducer 是指 不要所有的东西都放在redux里面

2:根据第一条,只有多个组件用到的数据才需要放入 redux里面,有的人 会说,把组件的ui状态放入redux 是方便管理,我认为 如果你需要在另外一个组件控制这个组件,那把这个组件的ui状态放入state自然是可以的,这遵循只有共享的数据才放入redux的原则,但是 一股脑的把所有的ui状态都放进去 只会增加redux的复杂性很很多不必要的代码

3:域数据,与ui状态相比,域数据被多个组件共同访问的几率要大大高于组件内部ui状态,所以 域数据应该放入redux

 

 

reducer如何调用其他reducer数据?

像id关联查询这些,或者数据库中的多表关联查询,和多表批量操作,这些在redux中如何实现?

redux希望我们以关系型数据的方式设计state,但是如果以关系型数据库的方式设计state,那就涉及到 多个reducer的并处理和顺序处理。但是reducer要求是纯函数,很显然 我们不可能在函数里面 去调用其他reducer,所以 唯一的操作路径 就是在容器组件里面 拿到其他reducer的数据,然后放入action中。至于并处理,则可以通过多个reducer响应一个action来做到。

 

业务逻辑在哪里?

业务逻辑 是指,根据业务逻辑对数据进行的处理,这里要区分一下 组件内部的逻辑不属于业务逻辑,因为展示型组件是通用的,所以很显然 业务逻辑在redux里面,然而 redux的ruducer只可能处理非常简单的业务逻辑,这也是为什么加了一个选择器的原因,选择器的出现 解决了 在获取数据的时候 应对 复杂数据结构的问题,那么 操作的时候,这种复杂的数据处理写在哪里呢?关于操作的时候分为两种情况,同步 和异步

同步:通过多个reducer监听同一个action来达到目的

异步:引入saga来处理

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!