6-为什么是reducer

reducer是一个函数,为什么叫reducer呢?

它有一种能力,就是从之前的状态变成另一个状态。
首先来看一个方法 : reduce,数组从左到右累加

参数 : 回调函数(初始值,数组每一项),初始值
运行过程 : 每次循环时都会拿到数组当前值,这样就可以实现累加
let aa = [1,2,3,4].reduce((acc,elt)=>{
    return acc+elt
},0)
console.log(aa) //10

reducer的灵感

就来源于reduce,callback其实就是reducer:每次遍历都是基于上一次的值,和当前值进行计算,再计算下一次的值,依次类推。来看一个reducer:

function num(state,action){
}

State是上一次计算完成之后得到的,所以reducer就是通过拿到上一次的state和现在发布的action计算出新的state,reducer就是为了得到新的state。
所以要确保reducer是一个纯函数:确定的输入得到确定的输出,不要有副作用,不要去得到一个全局变量,不要去修改一个全局变量。副作用是指:计算出一个值,但是发起了一个请求,改变了数据,这就是对外部的副作用。
副作用的代码都放到actionCreators里:比如发起ajax请求等。

你可能感兴趣的:(6-为什么是reducer)