redux源码分析:reducer

作为 redux 的重要概念, reducer 到底是什么
更新于: 2021-12-19 12:57:28

来自 redux 的 期望

首先看看  redux 期望的 reducer 是什么样子的

  1. 没有副作用
  2. 不修改入参,这里就能解释为什么有这种写法了 return { …state, newField: ‘xx’}
  3. 纯函数(废话…)
  4. 这意味着 state 的更新应该在"不可变(immutable)"的理念下完成,这就是说总是去返回一个新的更新后的对象,而不是直接去修改原始的 state tree。

基本准则

  • 入参为 action
  • 出参为 state
 (state, action) => newState,并且以不可变的方式更新 state,而不是直接修改 state
const reducer = (state = 0, action) => {
  switch (action.type) {
    case 'INCREMENT':
      return state + 1;
    case 'DECREMENT':
      return state - 1;
    default:
      return state;
  }
};

参考

https://www.redux.org.cn/docs/recipes/reducers/PrerequisiteConcepts.html