博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
React系列-Redux中间件
阅读量:6195 次
发布时间:2019-06-21

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

redux-logger

打印日志中间件

let reduxLogger = (store) => (dispatch) => (action) =>{        console.log(store.getState())        dispatch(action)        console.log(store.getState())    }复制代码

redux-thunk

处理异步请求

let reduxThunk = (store) => (dispatch) => (action) =>{        if(typeof action =='function'){            return action(dispatch,store.getState)        }        dispatch(action)    }复制代码

redux-promise

处理promise

let reduxPromise =  (store) => (dispatch) => (action) =>{        let reduxPromise = (store) => (dispatch)=> (action)=>{          if(action.then && typeof action.then === 'function'){            // 如果返回的是一个promise 那么不会处理失败逻辑            return action.then(dispatch)           }           if(action.payload && action.payload.then&& typeof action.payload.then ==='function'){             return action.payload.then(function(data){               action.payload = data;                 dispatch(action);             },function(err){                 action.payload = err;                 dispatch(action);                 return Promise.reject(err);             })           }           return dispatch(action);         }    }复制代码

applyMiddlewares

let applyMiddlewares = (middlewares)=>(createStore)=>(reducer)=>{        let store = createStore(reducer);        let chain = middlewares.map(middleware=>middleware(store))        dispatch = compose(...chain)(store.dispatch);        return {            ...store,            dispatch        }    }        // compose    let compose = (funcs)=>{        return funcs.reduce((a,b)=>(...args)=>a(b(...args)))    }复制代码

简要总结

  • redux 中间件都是一共返回三阶函数分别传递参数store、dispatch(源码里面是next)、action。
  • applymiddleware 也是一共三阶函数,分别传递参数为middlewares、createStore、reducer。内部实现为先通过createStore和reducer获取store,然后middleware执行传递store,中间件组合执行传递store.dispatch生成强化后的dispatch,最后覆盖之前老的dispatch

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

你可能感兴趣的文章
Nhibernate3循序渐进(二): 基本映射和复合主键
查看>>
如何设置mysql远程访问
查看>>
GIS案例学习笔记-ArcGIS整图大图出图实例教程
查看>>
前端周边技术
查看>>
ASP.NET操作服务System.ComponentModel.Win32Exception: 拒绝访问
查看>>
一点总结
查看>>
Adobe发布Air 2.5支持RIM平板电脑
查看>>
RSA总裁宣布:云计算是彻底转变安全交付方式的机会
查看>>
利用Attribute简化Unity框架IOC注入
查看>>
vim乱码问题
查看>>
shell中find使用
查看>>
Struts2的OGNL标签详解
查看>>
(笔记)TSL235新型光感器件--强烈推荐使用
查看>>
HDOJ 1232 畅通工程
查看>>
A标签实现文件下载功能
查看>>
Centos上安装配置docker(命令集)
查看>>
Android——Handler 多线程
查看>>
NB 命令安装需似机(无图型化安装)
查看>>
ARM Mysql c 通信
查看>>
在 Typescript 2.0 中使用 @types 类型定义
查看>>