我的网站开发技术经验总结 我的网站开发技术经验总结
首页

fangdown

我的网站开发技术经验总结
首页
  • 大前端

  • 基础

  • 框架

    • react

      • 说说对React的理解,有哪些特性
      • 说说对React高阶组件的理解
      • 谈谈React中fiber的理解
      • 说说对React事件机制的理解
      • 说说对React中受控组件和非受控组件的理解及应用场景
      • 说说对redux工作流程的理解
      • 说说对redux中间件的理解
        • 是什么
        • 怎么用
          • redux-thunk
          • redux-logger
        • 原理
        • FAQ
      • 说说对state和props的理解,有什么区别
      • 说说函数组件和类组件的理解和区别
      • 说说真实DOM和VDOM的区别,优缺点
      • 说说React.memo&useMemo&useCallback区别
      • 说说React路由有几种模式以及实现原理
      • 说说React生命周期有哪些不同阶段?每个阶段对应的方法
      • 说说React事件绑定有哪些
      • 说说React中的setState执行机制
      • 说说React中refs的理解
      • React构建组件有哪些方式及区别
      • React引入css的方式有哪几种
      • 谈谈React中key的作用
      • React中如何性能优化
      • React中hooks能取代redux吗
      • React组件通信方式有哪些
  • 情商

  • 算法

  • 网络

  • 千锤百炼
  • 框架
  • react
fangdown
2021-08-01
目录

说说对redux中间件的理解

# 是什么

介于发出action后,dispatch之前的一个函数

# 怎么用

# redux-thunk

  • 异步处理
  • 给函数传入dispatch,getstate
function patchThunk(store) {
    let next = store.dispatch;

    function dispatchAndThunk(action) {
        if (typeof action === "function") {
            action(store.dispatch, store.getState);
        } else {
            next(action);
        }
    }

    store.dispatch = dispatchAndThunk;
}

# redux-logger

  • 日志中间件
let next = store.dispatch;

function dispatchAndLog(action) {
  console.log("dispatching:", addAction(10));
  next(addAction(5));
  console.log("新的state:", store.getState());
}

store.dispatch = dispatchAndLog;

# 原理

  • 所有中间件被放进一个数组chain中,然后嵌套执行,最后执行store.dispatch
  • 把state和dispatch传入函数参数
export default function applyMiddleware(...middlewares) {
  return (createStore) => (reducer, preloadedState, enhancer) => {
    var store = createStore(reducer, preloadedState, enhancer);
    var dispatch = store.dispatch;
    var chain = [];

    var middlewareAPI = {
      getState: store.getState,
      dispatch: (action) => dispatch(action)
    };
    chain = middlewares.map(middleware => middleware(middlewareAPI));
    dispatch = compose(...chain)(store.dispatch);

    return {...store, dispatch}
  }
}

# FAQ

#react
上次更新: 2021/12/19, 18:05:42
说说对redux工作流程的理解
说说对state和props的理解,有什么区别

← 说说对redux工作流程的理解 说说对state和props的理解,有什么区别→

最近更新
01
多分支修复撞车的问题
05-01
02
如何成为架构师
01-23
03
服务器部署全过程
11-23
更多文章>
Theme by Vdoing | Copyright © 2019-2026 fangdown | 粤ICP备19079809号
  • 跟随系统
  • 浅色模式
  • 深色模式
  • 阅读模式