前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >详解Redux框架之applyMiddleware

详解Redux框架之applyMiddleware

原创
作者头像
挥刀北上
修改2021-02-04 10:05:36
7660
修改2021-02-04 10:05:36
举报
文章被收录于专栏:Node.js开发Node.js开发

在使用redux的时候我们通常要给redux增加中间件,中间件的作用是用户在调用dispatch之后,其之前配置的中间件会按照配置的顺序逐一执行,对流程进行处理。

而applyMiddleware函数就是配置redux中间件的那个函数,首先看一下applyMiddleware的简化代码:

代码语言:javascript
复制
export default function applyMiddleware(...middlewares) {
  return createStore => (...args) => {
    // 利用传入的createStore和reducer和创建一个store
    const store = createStore(...args)
    let dispatch = () => {
      throw new Error(
      )
    }
    const middlewareAPI = {
      getState: store.getState,
      dispatch: (...args) => dispatch(...args)
    }
    // 让每个 middleware 带着 middlewareAPI 这个参数分别执行一遍
    const chain = middlewares.map(middleware => middleware(middlewareAPI))
    // 接着 compose 将 chain 中的所有匿名函数,组装成一个新的函数,即新的 dispatch
    dispatch = compose(...chain)(store.dispatch)
    return {
      ...store,
      dispatch
    }
  }
}

阅读源码发现程序作了如下几点:

1、applyMiddleware本质是返回一个函数B,函数的参数为createStore。

2、函数B的内部首先生成了store

3、遍历中间件传入store

4、利用compose将所有传入了store的中间件进行合并串联,并传入最终的dispatch。

更新dispatch并返回。

原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。

如有侵权,请联系 cloudcommunity@tencent.com 删除。

原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。

如有侵权,请联系 cloudcommunity@tencent.com 删除。

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
相关产品与服务
消息队列 TDMQ
消息队列 TDMQ (Tencent Distributed Message Queue)是腾讯基于 Apache Pulsar 自研的一个云原生消息中间件系列,其中包含兼容Pulsar、RabbitMQ、RocketMQ 等协议的消息队列子产品,得益于其底层计算与存储分离的架构,TDMQ 具备良好的弹性伸缩以及故障恢复能力。
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档