Redux-Basic
文章目录

Redux

中间件

  • Thunk
    • 体积小使用简单, 和 Redux-Saga 功能类似但是轻量得多
    • 感觉有一些方法可以进行额外的封装, 并不需要一次性写那么长

主要目的

主要就是为了解决一些状态共享的需求:

  1. 某个组件的状态, 需要共享
  2. 某个状态需要在任何地方都可以拿到
  3. 一个组件需要改变全局状态
  4. 一个组件需要改变另一个组件的状态

实现原理

  1. 全局 Provider 传递一个 Store
  2. mapStateToProps, mapDispatchToProps 将一些 state 和 action map 到 props 上
  3. 然后使用 store dispatch action 到 reducer
  4. reducer 对 state 进行处理

Redux 缺点

  • Reducer 复用性
    • 很多需求可以用 Hooks 代替, 一些比较简单的项目完全没有必要集成 Redux
  • 重构困难
    • 因为 store 一般是最高层的 component 先 connect 生成的
    • 因此如果我们想增加一个和最高层同级的 component 那么可能就很麻烦
    • 比如, 一开始我们一个 SPA 用了 redux,然后我们希望把这个 SPA 集成到另一个大系统当中,并且希望这个旧的 SPA 显示为一个子页面。那么从外部页面传递 state 到这个 SPA 就有点麻烦, 因为在那之前 SPA 自身已经是一个完整的 redux app 了

为什么 Reducer 需要是一个纯函数

如果不是纯函数那么可能出现副作用
导致 state 未被正确更新
导致一系列 map 函数无效
这样就没有利用到这个框架的功能。
破坏了 redux 设计规范