Reducer 基础概念
就像 Reducers 中描述的一样,一个 Redux reducer 函数需要具备:
应该有类似 (prevIoUsstate, action) => newState 特征的函数,函数的类型与 Array.prototype.reduce(reducer, ?initialValue) 这个函数很相似。
应该是"纯"函数,纯函数意味着不能突变(原文 mutate,意指直接修改引用所指向的值)它的参数,如果在函数中执行 API 调用,或者在函数外部修改值,又或者调用一个非纯函数比如 Date.Now() 或 Math.random(),那么就会带来一些副作用。这意味着 state 的更新应该在"不可变(immutable)"的理念下完成,这就是说总是去返回一个新的更新后的对象,而不是直接去修改原始的 state tree。
关于不可变(immutability)和突变(mutation)以及副作用
因为上面这些规则,在去学习具体的组织 Redux reducer 的技术之前,了解并完全理解下面这些核心概念是十分重要的。
Redux Reducer 基础
核心概念:
理解 state 和 state shape
通过拆分 state 来确定各自的更新职责(reducer 组合)
高阶 reducers
定义 reducer 的初始化状态
阅读列表:
纯函数和副作用
核心概念:
阅读列表:
不可变数据的管理
核心概念:
可变与不可变
安全地以不可变的方式更新对象和数组
避免在函数和语句中突变 state
阅读列表
范式化数据
核心概念:
阅读列表: