redux源码学习笔记 - createStore】的更多相关文章

本篇是学习redux源码的一些记录,学习的redux版本是^4.0.1. 在页面开发时,需要管理很多状态(state),比如服务器响应,缓存数据,UI状态等等···当页面的庞大时,状态就会变的混乱.redux就派上用场了,它最大的特点就是使状态变化变的可预测. redux提供一个管理state的仓库(store),并且规定了store只能通过reducer(函数)来更新,而reducer必须通过dispatch(action)来触发,action就是普通的JavaScript对象,它约定了执行的…
https://github.com/reduxjs/redux 版本 4.0.0 先了解一下redux是怎么用的,此处摘抄自阮一峰老师的<Redux 入门教程> // Web 应用是一个状态机,视图与状态是一一对应的 // 所有的状态,保存在一个对象里面 // store 是保存数据的地方 // 创建 store import { createStore } from 'redux' const store = createStore(fn) // state 是某一时刻 store 的快照…
在创建store时,createStore(reducer, preloadedState, enhancer),除了reducer函数,初始状态,还可以传入enhancer.这个enhancer在createStore的源码中是这样使用的 return enhancer(createStore)(reducer, preloadedState) 它可以接受createStore方法并进行自定义改装,然后再使用改装后的方法创建仓库. 而redux官方提供的enhancer就只有applyMidd…
上一篇有了解到,reducer函数的两个为:当前state和此次dispatch的action. state的结构是JavaScript对象,每个key都可以代表着不同意义的数据.比如说 { lists:object, type:string } lists管理列表数据,type管理选中的类型.此时就需要考虑将state分为不同的子树,每次子树数据对应一个reducer子函数,单独管理对应的state.但是createStore(reducer,preloadedState)函数接收的reduc…
接着前面的,我们继续,打开createStore.js, 直接看最后, createStore返回的就是一个带着5个方法的对象. return { dispatch, subscribe, getState, replaceReducer, [$$observable]: observable } 同样的,我先删除一些不需要的代码,简化成如下, 注意看备注.(注:这里先无视中间件和enhancer,后篇再说) export const ActionTypes = { INIT: '@@redux…
上接 Underscore.js 源码学习笔记(上) === 756 行开始 函数部分. var executeBound = function(sourceFunc, boundFunc, context, callingContext, args) { if (!(callingContext instanceof boundFunc)) return sourceFunc.apply(context, args); var self = baseCreate(sourceFunc.prot…
版本 Underscore.js 1.9.1 一共 1693 行.注释我就删了,太长了… 整体是一个 (function() {...}());  这样的东西,我们应该知道这是一个 IIFE(立即执行函数). var root = typeof self == 'object' && self.self === self && self || typeof global == 'object' && global.global === global &…
在研究 redux-saga时,发现自己对 redux middleware 不是太了解,因此,便决定先深入解读一下 redux 源码.跟大多数人一样,发现 redux源码 真的很精简,目录结构如下: |-- utils |-- warnings.js |-- applyMiddleware.js |-- bindActionCreator.js |-- combineReducers.js |-- compose.js |-- createStore.js |-- index.js 在 ind…
AXI_LITE源码学习笔记 1. axi_awready信号的产生 准备接收写地址信号 // Implement axi_awready generation // axi_awready is asserted for one S_AXI_ACLK clock cycle when both // S_AXI_AWVALID and S_AXI_WVALID are asserted. axi_awready is // de-asserted when reset is low. alwa…
Hadoop源码学习笔记(6) ——从ls命令一路解剖 Hadoop几个模块的程序我们大致有了点了解,现在我们得细看一下这个程序是如何处理命令的. 我们就从原头开始,然后一步步追查. 我们先选中ls命令,这是一个列出分面式文件系统中的目录结构.传入一个查阅地址,如果没有则是根目录.启动NameNode和DataNode服务.然后在命令行中输入ls : 换成程序,如果写呢,我们新建一个ClientEnter类.之前章节中,我们就知道,在命令行中输入的dfs命令,指向到org.apache.hado…