美文网首页
Redux中间件

Redux中间件

作者: 諾城 | 来源:发表于2020-08-18 16:41 被阅读0次

在上一篇文章中讲了redux的使用,redux中保存的counter是一个本地定义的数据,我们可以直接通过同步的操作来dispatch action,state就会被立即更新。
但是实际的开发中,redux中管理的很多数据可能来自服务器,我们需要进行异步的请求,再将数据保存到redux中。就是说在异步的网络请求中通过dispatch action来更新state中的数据。这时候就需要用到Redux中间件了。
具体应用如下:
一、中间件的引入,安装redux-thunk

yarn add redux-thunk

二、在创建store时传入应用了middleware的enhance函数
1、通过applyMiddleware来结合多个Middleware, 返回一个enhancer;
2、将enhancer作为第二个参数传入到createStore中;

import { createStore, applyMiddleware, compose } from 'redux';
import thunkMiddleware from 'redux-thunk'
import reducer from './reducer';

const composeEnhancers = window.__REDUX_DEVTOOLS_EXTENSION_COMPOSE__ || compose;

// 通过applyMiddleware来结合多个Middleware, 返回一个enhancer
const enhancer = composeEnhancers(applyMiddleware(thunkMiddleware));

const store = createStore(reducer, enhancer);

export default store;

三、在actionCreators.js中定义一个方法getJokeData,方法内部进行网络请求,在网络请求成功的回调中调用其他的action去更新store管理的数据。

import {
  ADD_NUMBER,
} from './constants.js'
import axios from 'axios'

const addAction = (count) => ({
  type: ADD_NUMBER,
  num: count
});

const getJokeData = () => {
  return (dispatch) => {
    axios.get('https://autumnfish.cn/api/joke/list?num=1')
    .then(res => {
      // 网络请求成功后,调用addAction方法去更新counter数据
      dispatch(addAction(6))
    })
  }
}

export {
  addAction,
  getJokeData
}

我的理解是像网络请求这种异步操作,获取到的数据要用来去更新store管理的数据,就需要在网络请求的回调中,去触发能更新store中管理数据的action,这种异步操作需要通过中间件来实现。

相关文章

  • react 面试

    react redux (所有数据都放入redux管理) 1、redux中间件原理(middleware) 中间件...

  • 2-Redux中间件

    Redux 中间件 [toc] Redux 中间件的作用 Reudx 中的中间件是通过对 dispatch 进行的...

  • Redux 中间件源码清源

    网上的Redux中间件原理解释多有疏漏,譬如我在多篇blog上看到Redux中间件解释以及Redux中间件深入浅出...

  • Day17. Redux深入

    如何使用redux-thunk 中间件的使用, redux-thunk redux-devtools redux开...

  • [源码] Redux React-Redux01

    redux中间件洋葱模型imageimage redux中间件注意点image 导航 [深入01] 执行上下文[h...

  • react技术栈

    关于 Redux 中间件 Redux 的中间件是定义一个函数,对 dispatch 进行改造,在发出 action...

  • Redux-saga

    Redux-saga 概述 redux-saga是一个用于管理redux应用异步操作的中间件,redux-saga...

  • react项目中引入redux+react-router的一些写

    Redux + react-router 关于redux中间件的理解https://zhuanlan.zhihu....

  • redux

    使用步骤 redux只处理同步 redux处理异步请求中间件· 在引入redux的时候引入applyMiddlew...

  • redux源码解读

    Redux API 总览 浅谈redux 中间件的原理 原文 在 Redux 的源码目录 src/,我们可以看到如...

网友评论

      本文标题:Redux中间件

      本文链接:https://www.haomeiwen.com/subject/ildkjktx.html