为什么叫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()

results matching ""

    No results matching ""