Redux源码分析
liujie2019 opened this issue · comments
奔跑的蜗牛233 commented
具体的源码分析文件请戳:源码详见
Redux
的核心**是:将应用的状态state
存储在唯一的store
中。通过store.dispatch
一个action
来描述触发了什么动作,用reducer
处理相应的action
并返回新的state
。需要注意的是:创建store
的时候需要传入reducer
,真正可以改变应用状态state
的是store.dispatch
API。
1. 相关文件说明
- applyMiddleware.js: 将
middleware
串联起来生成一个更强大的dispatch
函数,这就是中间件的本质作用; - bindActionCreators.js: 把
action creators
转成拥有同名keys
的对象,使用dispatch
把每个action creator
包围起来,使用时可以直接调用; - combineReducers.js: 将多个
reducer
组合起来,每一个reducer
独立管理自己对应的state
; - compose.js: 将
middleware
从右向左依次调用,函数式编程中的常用方法,被applyMiddleware
调用; - createStore.js: 最核心功能,创建一个
store
,包括实现了subscribe,unsubscribe,dispatch及state
的储存; - index.js: 对外export
- utils: 一些小的辅助函数供其他的函数调用
├── actionTypes.js: redux内置的action,用来初始化initialState
├── isPlainObject.js: 用来判断是否为单纯对象
└── warning.js: 控制台输出一个警告提示
推荐源码的阅读顺序为:
index.js -> creatStore.js -> applyMiddleware.js (compose.js) -> combineReducers.js -> bindActionCreators.js
redux
是一个状态管理框架,是在Flux
的基础上产生的,基本**是:保证数据的单向流动,同时便于控制、使用、测试。