# max-redux-source **Repository Path**: max-lu/max-redux-source ## Basic Information - **Project Name**: max-redux-source - **Description**: redux源码实现 - **Primary Language**: Unknown - **License**: Not specified - **Default Branch**: master - **Homepage**: None - **GVP Project**: No ## Statistics - **Stars**: 1 - **Forks**: 0 - **Created**: 2021-08-02 - **Last Updated**: 2021-08-03 ## Categories & Tags **Categories**: Uncategorized **Tags**: react-redux ## README 学习目标: + 函数式编程:柯里化、compose(优点灵活、缺点绕) + 系统栈 + 理解reducer + redux的设计原理和源码实现 + 中间件applyMiddleware的原理和实现 + redux-thunk的设计和实现 ------ 函数式编程的两大利器:柯里化、函数compose 柯里化: a()() --- ## Reducer reducer就是一个纯函数,接收旧的state和atcion返回新的state。 ```javascript (previousState, action) => newState ``` 之所以将这样的函数称之为reducer,是因为这个函数和被传入Array.reduce里的回调函数属于相同的类型。保持reducer的纯净非常重要。永远不要在reducer里做这些操作: + 修改传入参数 + 执行有副作用的操作,如API请求和路由跳转 + 调用非纯函数,如Math.random(); --- ## Redux + Redux是Javascript应用的状态容器,它保证程序行为一致并且易于测试 + 状态值:状态发生改变会引起组件更新的值 + Reducer负责状态管理库的规则 ![RUNOOB 图标](./redux-flow.webp) redux需要什么? + 需要一个store来存储数据(createStore) + store里的reducer初始化state并定义state修改规则 + 通过dispatch一个action来提交数据的修改 + action提交到reducer函数中,根据传入的action的type,返回新的state 检查点/完成点: + createStore创建store数据仓库管理库 + reducer初始化,修改状态函数,定义函数规则 + getState方法获取状态值(getter) + dispatch提交更新(setter) + subscribe变更订阅,订阅state更新之后要做的事 ## applyMiddleware 中间件原理以及thunk中间件的源码实现