博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
React-Redux 源码解析 二(middleware)
阅读量:6292 次
发布时间:2019-06-22

本文共 1385 字,大约阅读时间需要 4 分钟。

前言

我们已经解析了ReduxcreateStore 的基本使用方法。其中有涉及到第三个参数enhancer, 其对应的就是中间件的概率,我们这一章节我对其进行简单的分析.

Demo

下面代码是一个我们使用了中间件的一个简单的 我可以根据下面的步骤执行脚本,可以运行demo 查看效果:

1 git clone git@github.com:bluebrid/redux-learning.git

2 git fetch

3 git checkout middleware

4 npm i

5 npm start

下面是创建一个有中间件的Store 的demo:

import { createStore, applyMiddleware, compose } from '../redux'import thunk from '../reduxThunk'import { createLogger } from 'redux-logger'import api from '../middleware/api'import rootReducer from '../reducers'import DevTools from '../containers/DevTools'const configureStore = preloadedState => {  const store = createStore(    rootReducer,    preloadedState,    compose(      applyMiddleware(thunk, api, createLogger()),      DevTools.instrument()    )  )  if (module.hot) {    module.hot.accept('../reducers', () => {      store.replaceReducer(rootReducer)    })  }  return store}export default configureStore复制代码

下面我们会针对这个代码,进行一步步深入的分析。

compose

从第一章节,我们已经知道第三个参数是一个enhancer ,其实也就是一个中间件的概念,但是为我们从上面的脚本看到,第三个参数居然是执行了一个compose 的方法, 我接下来就分析下这个compose 方法,:

export default function compose(...funcs) {  if (funcs.length === 0) {    return arg => arg  }  if (funcs.length === 1) {    return funcs[0]  }  return funcs.reduce((a, b) => (...args) => a(b(...args)))}复制代码

如果传入的中间件的个数为:0,返回一个空函数,则相当于什么也不操作, 如果传入的参数长度为: 1, 则直接返回这个函数, 下面才是重点,return funcs.reduce((a, b) => (...args) => a(b(...args)))

TODO.....

转载地址:http://axcta.baihongyu.com/

你可能感兴趣的文章
Windows 术语表(Windows Glossary)
查看>>
TOJ 4689: Sawtooth
查看>>
你会开会吗
查看>>
关于FAST比较全的博文
查看>>
SCVMM 安装
查看>>
iOSBlock和delegate的用法
查看>>
4.Azure创建点到站点的***隧道(下)
查看>>
怎样为用户写“招标书”
查看>>
python运维之轻松模拟开发FTP软件05
查看>>
Nginx配置proxy_pass转发的/路径问题
查看>>
总编下午茶:挑战者心态能否帮助微软重回云计算巅峰?
查看>>
理解并取证:广域网上的PPP协议
查看>>
动软分享社区系统实现个性化导购营销平台
查看>>
shell编程 字符串处理
查看>>
Cisco3560交换机enable密码破解和恢复出厂设置
查看>>
交换安全老师课堂笔记
查看>>
RHEL6基础四十三之RHEL文件共享②Samba简介
查看>>
CuteEditor Html中显示Word格式粘贴的文章[CuteEditor WordToHtml]
查看>>
zabbix 二次开发之调用api接口获取历史数据
查看>>
给自己定的目标
查看>>