Reducer

219 阅读2分钟

携手创作,共同成长!这是我参与「掘金日新计划 · 8 月更文挑战」的第29天
一、Reducer 的作用
Reducers 是纯函数,它规定应用程序的状态怎样因响应 ACTION 而改变。Reducers 通过接受先前的状态和 action 来工作,然后它返回一个新的状态。它根据操作的类型确定需要执行哪种更新,然后返回新的值。如果不需要完成任务,它会返回原来的状态。

二、redux缺点
一个组件所需要的数据,必须由父组件传过来,而不能像 flux 中直接从 store 取;当一个组件相关数据更新时,即使父组件不需要用到这个组件,父组件还是会重新 render,可能会有效率影响,或者需要写复杂的 shouldComponentUpdate 进行判断。

三、redux
redux 是一个应用数据流框架,主要是解决了组件间状态共享的问题,原理是集中式管理,主要有三个核心方法,action,store,reducer
1.三大原则:
1)唯一数据源(整个应用的 state 被储存在一棵 object tree 中,并且这个 object tree 只存在于唯一一个 store 中)
2)reducer 必须是纯函数(输入必须对应着唯一的输出)
3)State 是只读的, 想要更改必须经过派发 action

2.redux 的工作流程:
使用通过 reducer 创建出来的 Store 发起一个 Action,reducer 会执行相应的更新 state 的方法,当 state 更新之后,view 会根据 state 做出相应的变化
1)提供 getState()获取到 state
2)通过 dispatch(action)发起 action 更新 state
3)通过 subscribe()注册监听器

四、vue 和 react 的区别
监听数据变化的实现原理不同;数据流的不同;React 组合不同功能的方式是通过 HoC(高阶组件),Vue 组合不同功能的方式是通过 mixin;组件通信的不同;模板渲染方式的不同;渲染过程不同等。