目录
阅读本文的前提条件,了解
Redux基本概念
。
杂谈:
了解一个框架,首先得明白,
框架解决的痛点是什么
。
前端需要对状态进行管理(同步状态、
异步状态
),讲实话,随便写写代码都是状态管理,但是这是我们的追求么?当然不是,我们需要优雅地对前端状态进行管理。在MVC架构中,可以简单映射为数据(Model)—-界面(View)—-交互操作(Controller)。
所谓的状态管理基本就是对数据和交互操作的管理。Redux基本就做了这样一件事情。
总结:
Redux源码基本做了两个操作:
1)维护一个状态树
2)状态的发布订阅
一、维护一个状态树、发布订阅
/** 创建状态树
* @param {Function} reducer:reducer就是你写的函数,actionType---->new state
* @param {any} preloadedState: store的初始状态,可以是任何形式,可以是函数,因为有的初始状态可能需要从服务端获取数据进行merge
* @param {Function} enhancer: 中间件,在action发出之前经历的一系列骚操作
* @returns {Store} :返回值是一个对象,可以对Store进行一系列操作,订阅、获取等
*/
export default function createStore(reducer, preloadedState, enhancer) {
// 在源码中,将preloadedState和enhancer可以看作是同一个作用的,就是在生成初始状态之前进行的一系列操作
if (
(typeof preloadedState === 'function' && typeof enhancer === 'function') ||
(typeof enhancer === 'function' && typeof arguments[3] === 'function')
) {
throw new Error(
'It looks like you are passing several store enhancers to ' +
'createStore(). This is not supported. Instead, compose them ' +
'together to a single function'
)
}
if (typeof preloadedState === 'function' && typeof enhancer
版权声明:本文为Donspeng原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。