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请求等。

©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • 学习必备要点: 首先弄明白,Redux在使用React开发应用时,起到什么作用——状态集中管理 弄清楚Redux是...
    贺贺v5阅读 8,983评论 10 58
  • 使用redux+react已有一段时间,刚开始使用并未深入了解其源码,最近静下心细读源码,感触颇深~ 本文主要包含...
    字节跳动技术团队阅读 1,605评论 0 5
  • 一、CMS管理系统功能 CMS是ContentManagementSystem的缩写,意为"内容管理系统"。 CM...
    默默先生Alec阅读 5,433评论 0 7
  • 弟弟拖着沉沉的行李箱,在蒙蒙亮的天色中仍然显得有些高大。摩托车的轰鸣声催促着他离开,他回过头来欢快地朝我挥挥手:“...
    叠叠不休阅读 988评论 11 25
  • 昨晚,听说了一些可能这辈子都没想到的事情,完爆世界观。 形形色色的人,组成了一个大千世界。而我只是一个默默无闻的我...
    李羽蒙阅读 189评论 0 0