为什么叫Reducer?
为什么叫做Reducer?来源于:Array.prototype.reduce(reducer, ?initialValue)
let sum = [0, 1, 2, 3].reduce(function(acc, val) {
return acc + val;
}, 0);
reducer是一个函数,它拿到之前的累加值(之前的状态)和下一个新的值(新的操作),处理完成后,返回新的累加值(新的状态)。
在Redux中,reducer就是一个纯函数,它拿到前一个state和action,返回下一个新的state。
(previousState, action) => newState
有一点很重要的是,Reducer是一个纯函数,什么是纯函数?即相同的输入,永远会得到相同的输出,而且没有任何可观察的副作用。
所以有几件事情,永远不要在reducer里面操作:
1.改变参数
2.执行有副作用的API调用和路由转换
3.调用非纯函数Date.now()
或者Math.random()