liujie2019 / Blog

💪Star是最大鼓励--平时学习中总结和demo,请多多指教。最新博客地址:

Home Page:https://liujie2019.github.io/

Geek Repo:Geek Repo

Github PK Tool:Github PK Tool

Redux源码分析

liujie2019 opened this issue · comments

具体的源码分析文件请戳:源码详见

Redux的核心**是:将应用的状态state存储在唯一的store中。通过store.dispatch一个action来描述触发了什么动作,用reducer处理相应的action并返回新的state。需要注意的是:创建store的时候需要传入reducer,真正可以改变应用状态state的是store.dispatchAPI。

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的基础上产生的,基本**是:保证数据的单向流动,同时便于控制、使用、测试。

参考文档

  1. redux-source-analyze
  2. Redux 源码深度解析
  3. React 实践心得:react-redux 之 connect 方法详解
  4. Redux 源码分析
  5. redux深入进阶
  6. Redux实例学习 - Redux套用七步骤
  7. Redux从设计到源码
  8. redux 源码阅读笔记
  9. Redux 源码解析系列(一) -- Redux的实现**
  10. redux源码分析之四:compose函数