理解redux中间件
redux questions :
middleware:
1 export default function applyMiddleware(...middlewares) {
2 return createStore => (...args) => {
3 const store = createStore(...args)
4 let dispatch = () => {
5 throw new Error(
6 'Dispatching while constructing your middleware is not allowed. ' +
7 'Other middleware would not be applied to this dispatch.'
8 )
9 }
10
11 const middlewareAPI = {
12 getState: store.getState,
13 dispatch: (...args) => dispatch(...args)
14 }
15 const chain = middlewares.map(middleware => middleware(middlewareAPI))
16 dispatch = compose(...chain)(store.dispatch)
17 // dispatch is the new
18 return {
19 ...store,
20 dispatch
21 }
22 }
23 }
24
25 //dispatch in createStore
26 // dispatch action and run the listener callBack
27 function dispatch(action) {
28 try {
29 isDispatching = true
30 currentState = currentReducer(currentState, action)
31 } finally {
32 isDispatching = false
33 }
34
35 const listeners = (currentListeners = nextListeners)
36 for (let i = 0; i < listeners.length; i++) {
37 const listener = listeners[i]
38 listener()
39 }
40
41 return action
42 }
43
44
45 // In createStore.js, the enhance is the function returned by applyMiddleware
46 // return a store which dispatch is decorated
47 enhance(createStore)(reducer,preloadState)
48
49 // example looger middleware
50 function logger({getState})=>{
51 return (next)=>(action)=>{
52 // action
53 const returnNext = next(action)
54 const state = getState()
55 console.log(`${ation.type}=>${state}`)
56 // doSomething
57 return returnNext
58 }
59 }
参考:
理解redux中间件的更多相关文章
- 理解 Redux 中间件机制
Redux 的 action 是一个 JS 对象,它表明了如何对 store 进行修改.但是 Redux 的中间件机制使action creator 不光可以返回 action 对象,也可以返回 ac ...
- 3.3 理解 Redux 中间件(转)
这一小节会讲解 redux 中间件的原理,为下一节讲解 redux 异步 action 做铺垫,主要内容为: Redux 中间件是什么 使用 Redux 中间件 logger 中间件结构分析 appl ...
- redux深入理解之中间件(middleware)
理解reduce函数 reduce() 方法接收一个函数作为累加器(accumulator),数组中的每个值(从左到右)开始缩减,最终为一个值. arr.reduce([callback, initi ...
- 理解 Redux 的中间件
将该思想抽象出来,其实和 Redux 就无关了.问题变成,怎样实现在截获函数的执行,以在其执行前后添加自己的逻辑. 为了演示,我们准备如下的示例代码来模拟 Redux dispatch action ...
- 理解Redux以及如何在项目中的使用
今天我们来聊聊Redux,这篇文章是一个进阶的文章,建议大家先对redux的基础有一定的了解,在这里给大家推荐一下阮一峰老师的文章: http://www.ruanyifeng.com/blog/20 ...
- 通俗易懂的理解 Redux(知乎)
1. React有props和state: props意味着父级分发下来的属性[父组件的state传递给子组件 子组件使用props获取],state意味着组件内部可以自行管理的状态,并且整个Rea ...
- Redux:中间件
redux中间件概念 比较容易理解. 在使用redux时,改变store state的一个固定套路是调用store.dispatch(action)方法,将action送到reducer中. 所谓中间 ...
- react+redux教程(七)自定义redux中间件
今天,我们要讲解的是自定义redux中间件这个知识点.本节内容非常抽象,特别是中间件的定义原理,那多层的函数嵌套和串联,需要极强逻辑思维能力才能完全消化吸收.不过我会多罗嗦几句,所以不用担心. 例子 ...
- 轻松理解Redux原理及工作流程
轻松理解Redux原理及工作流程 Redux由Dan Abramov在2015年创建的科技术语.是受2014年Facebook的Flux架构以及函数式编程语言Elm启发.很快,Redux因其简单易学体 ...
- 【React全家桶入门之十三】Redux中间件与异步action
在上一篇中我们了解到,更新Redux中状态的流程是这种:action -> reducer -> new state. 文中也讲到.action是一个普通的javascript对象.red ...
随机推荐
- 【Redis场景拓展】秒杀问题-全局唯一ID生成策略
全局唯一ID 为什么要使用全局唯一ID: 当用户抢购时,就会生成订单并保存到订单表中,而订单表如果使用数据库自增ID就存在一些问题: 受单表数据量的限制 id的规律性太明显 场景分析一:如果我们的id ...
- jmeter性能监控
jmeter监控内存,CPU等方法 (2018-06-26 15:39:37) 转载▼ 分类: 性能测试 方法1:使用插件来监控CPU,内存等的使用情况1.需要的插件准备JMeterPlugins ...
- 浅谈Pytest中的warning处理
浅谈Pytest中的warning处理 没有处理warning 我们写一个简单的测试 import pytest def test_demo(): import warnings warnings.w ...
- python字符串表达式求值
背景: 在开发的过程中涉及到动态的根据公式计算数值 技术上选择了python a= eval("1+2*(3+1)") print(a)
- Flex布局专题
Flex布局专题 参照 https://www.runoob.com/w3cnote/flex-grammar.html 下面是自己看代码的一下 小结,和认识,加笔记,加原文 认识容器 flex布局需 ...
- python3中,len()、isalpha()、isspace()、isdigit()、isalnum()实例
# 实例:使用while循环 import string s1 = input('请输入一个字符串:\n') letters = 0 space = 0 digit = 0 others = 0 i ...
- Eureka、Consul、Zookeeper注册中心总结
组件名 编写语言 CAP 服务健康检查 对外暴露接口 Springcloud集成 Eureka Java AP 可配支持(安全机制) Http √ Consul Go CP 支持 Http/DNS √ ...
- charles初级使用
使用charles抓包 一 charles简介 charles 是一个http proxy,是一个中间人,位于客户端Cilent和服务器Server中间. Client发送给Server的请求会经过c ...
- angr初探
前言 在搞fuzz的时候发现了一个比较难以解决的问题.例如if(*buf == "\xde\xad\xbe\xef"),我们如果想通过纯fuzz去进入这个if的分支,那么概率极其微 ...
- Python arcpy创建栅格、批量拼接栅格
本文介绍基于Python语言arcpy模块,实现栅格影像图层建立与多幅遥感影像数据批量拼接(Mosaic)的操作. 首先,相关操作所需具体代码如下: import os import arcp ...