redux源码分析:reducer
作为 redux 的重要概念, reducer 到底是什么
来自 redux 的 期望
首先看看 redux 期望的 reducer 是什么样子的
- 没有副作用
- 不修改入参,这里就能解释为什么有这种写法了
return { …state, newField: ‘xx’}
- 纯函数(废话…)
- 这意味着 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