博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
简化异步redux控制中间件redux-order
阅读量:6392 次
发布时间:2019-06-23

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

redux-order

redux-order是处理redux的中间件,简化redux的异步流控制处理。

安装

npm install redux-order复制代码

引入redux-order

import {createStore, applyMiddleware, compose} from 'redux';import reduxOrder from 'redux-order';import reducers from './reduces';const enhancer = compose(  //引入中间件  applyMiddleware(reduxOrder()));const store = createStore(  reducers,  enhancer);export default store;复制代码

reduces中处理异步

// actionconst LOGIN = 'auth/LOGIN';const LOGIN_SUCCESS = 'auth/LOGIN_SUCCESS';const LOGIN_FAIL = 'auth/LOGIN_FAIL';const initialState = {};// reducerexport default function reducer(state = initialState, action = {}) {  switch (action.type) {    case LOGIN:      console.log(action);      return {        ...state,        requesting: true,        requested: false,    };    case LOGIN_SUCCESS:      console.log(action);      return {        ...state,        requesting: false,        requested: true,        auth: action.res    };    case LOGIN_FAIL:      console.log(action);      return {        ...state,        requesting: false,        requested: true,        loginError: action.err    };    default:      return state;  }}// 触发 actionexport function login(user, pass) {  return {    types: [LOGIN, LOGIN_SUCCESS, LOGIN_FAIL],    promise: axios.post('/api/login', {user, pass}),    data: 'message',    list: [1, 2, 3, 4]  };}复制代码

异步action

  • 在上面的例子里,我们创建了异步的redux请求。例子中定义了LOGINLOGIN_SUCCESSLOGIN_FAIL三个action,依次代表请求发出、请求成功、请求失败。在发出一个异步promise请求后,首先触发了LOGIN,假如请求成功则进入LOGIN_SUCCESS,否则就进入LOGIN_FAIL
  • 异步动作需要定义types,types为数组并且至少需要两个action(发出请求和结果),promise参数为异步请求,异步请求必须为promise对象。
  • 请求的结果在reducer中的action对象中获得,如果是成功的返回结果为action.req,失败的则是action.err
  • 在发出action时,还可以携带payload。可以自定义需要携带的参数,在reducer中即可访问action携带的参数。

同步action

export function logout() {  return {    type: LOGOUT  };}复制代码

上面为触发一个同步的action,type 参数定义要触发的动作,同样也可以携带payload。注意⚠️异步的action参数为types,而同步的为type

地址

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

你可能感兴趣的文章
数论 --- 费马小定理 + 快速幂 HDU 4704 Sum
查看>>
(实用)Linux下安装JDK和Eclipse
查看>>
16 包
查看>>
[转]map hash_map unordered_map 性能测试
查看>>
如果点击项目生成时,报错如:不能编辑或者访问拒绝。
查看>>
Selenium学习(一)---Selenium IDE安装及简单介绍
查看>>
PHP控制反转(IOC)和依赖注入(DI)
查看>>
学习计划
查看>>
获取鼠标和元素的坐标点
查看>>
PXE 部署不同版本的系统安装环境以及挽救环境
查看>>
Linux 计划任务
查看>>
flask的orm操作
查看>>
如何防止驱动被恶意利用
查看>>
Nagios的搭建
查看>>
我的友情链接
查看>>
Oracle SQL之--多表查询基础用法
查看>>
图形化插件对Eclipse的版本要求
查看>>
两个关于数列的Python脚本(斐波那契数列和猴子吃香蕉类问题)
查看>>
olabuy-时光从来素默,内心应保持一份素淡与简静
查看>>
kux文件怎么打开 苹果手机如何观看kux视频
查看>>