在redux中,action仅仅是携带了数据的普通js对象,actionCreator返回值是这个action类型的对象.

然后通过store.dispatch()进行分发,同步的情况下一切就都很完美,但是reducer无法处理异步的情况

这时候  我们就需要中间件middleware 来解决

//这里先介绍一个redux-thunk

我们现在有这样的一个需求

cinema和search  都需要请求后台的数据  这个数据还一样

`重复请求 不太好

我们优化一下  谁先取到  就先存起来   之后 就不用再发送请求

我们定好reducer

再定义actionCreator

actionCreator在这里是按照配定好中间件的情况下写的

这是个异步的请求  请求的结果 最终会是一个dispatch的对象

(这里面的dispatch参数可以更改成别的名字,这样写只是为了清除 中间件到底塞到这个异步的actionCreator  中  什么东西)

我们在cinema组件页面中导入actionCreator

然后 在组件被创建的时候  判断一下   是不是要请求数据

(如果redux的store中 这个list 没有数据   我们就将上面actionCreator的返回对象值  dispatch出去  进行 list的缓存)

之后我们在redux的store.js中配置中间件

先导入  安装好的redux-thunk的包

使用applyMiddleware()挂载中间件

这样就完成了   如果没有这个store.js文件中的这两个配置  上面在actionCreator和cinema组件中的配置 就执行不了  而且会报错

以上就是redux-thunk中间件的完整使用

如果我们想在 cinema组件中 使用我们的redux的store中的数据  (在函数式组件中)

使用useState

并在useEffect中订阅 并 设置状态

记着在cinema组件销毁的  取消订阅  以避免重复订阅  都是在useEffect中完成

直接jsx使用就行

Redux中间件redux-thunk相关推荐

  1. redux中间件原理-讲义

    1.redux中间件简介 1.1.什么是redux中间件 redux 提供了类似后端 Express 的中间件概念,本质的目的是提供第三方插件的模式,自定义拦截 action -> reduce ...

  2. Redux中间件(redux-thunk、redux-promise、redux-saga)

    文章目录 1.redux中间件简介 1.1.什么是redux中间件 1.2.使用redux中间件 2.中间件的运行机制 2.1.createStore源码分析 2.2.applyMiddleware源 ...

  3. [Redux/Mobx] redux的thunk作用是什么?

    [Redux/Mobx] redux的thunk作用是什么? 作用:通过redux-thunk这个中间件,改变了redux中原本dispatch函数的作用,使它可以接受一个function作为disp ...

  4. Redux中间件——Redux-thunk

    什么是thunk? Redux-thunk是作为redux的middleware存在的,thunk是函数编程界的一个专有名词,主要用于calculation delay,也就是延迟计算. functi ...

  5. redux中间件+react高阶组件

    1.redux中间件 中间件提供第三方插件的模式,自定义拦截 action -> reducer 的过程.变为 action -> middlewares -> reducer.这种 ...

  6. Koa2和Redux中间件源码研究

    一.Koa2中间件源码分析 在Koa2中,中间件被存放在一个数组中. 使用koa中,最常见的就是app.use(fn),use函数部分源码如下所示.首先中间件必须是个函数.若是generator函数, ...

  7. [Redux/Mobx] Redux怎么添加新的中间件?

    [Redux/Mobx] Redux怎么添加新的中间件? applyMiddleware 个人简介 我是歌谣,欢迎和大家一起交流前后端知识.放弃很容易, 但坚持一定很酷.欢迎大家一起讨论 主目录 与歌 ...

  8. redux引用多个中间件_如何轻松创建您的第一个Redux中间件

    redux引用多个中间件 by Gabriele Cimato 加布里埃莱·西马托(Gabriele Cimato) 如何轻松创建您的第一个Redux中间件 (How to create your f ...

  9. 【Redux】redux的使用详解

    Redux的使用详解 Redux的核心思想 理解纯函数 1. 为什么要使用redux JavaScript开发的应用程序,已经变得越来越复杂了: JavaScript需要 管理的状态越来越多,越来越复 ...

  10. Redux相关知识(什么是redux、redux的工作原理、redux的核心概念、redux的基本使用)(十一)

    系列文章目录 第一章:React基础知识(React基本使用.JSX语法.React模块化与组件化)(一) 第二章:React基础知识(组件实例三大核心属性state.props.refs)(二) 第 ...

最新文章

  1. [TEAP] HTML5简史
  2. pythondes加密盒子_PYTHON实现DES加密及base64源码
  3. 利用union判断系统的大小端
  4. php 监听端口数据客户端ip_PHP做端口监听示例代码
  5. mysql 5.7 安装后添加root用户
  6. mysql不能删除外键吗,为什么mysql不允许删除外键?
  7. 微软自动化测试工具Playwright快速上手指南
  8. C/C++编程笔记:浪漫流星雨表白程序,七夕想表白,我教你啊!
  9. Excel的窗口如何冻结与拆分?
  10. 快速启动软件之 Rolan ,你真的会用?
  11. 手机影音最终,软件退出功能的优化
  12. 2014广东计算机一级试题及答案,广东计算机一级试题2014版
  13. iVX案例制作(1)—图片查看器
  14. android 广告库sdk,GitHub - adxdata/sdk-android-demo: 美数广告SDK(Android)示例
  15. 字体图标的引入方式(阿里巴巴字体库的使用)
  16. Java kafka监控 topic的数据量count情况,每个topic的Summed Recent Offsets(总结最近的偏移量)
  17. Node.js.不要堵塞线程(一)
  18. linux下编译安装ntfs,内核编译安装 (用NTFS模块)
  19. 二叉树的递归遍历和非递归遍历实现(C++)(深度优先)
  20. 维控协议转换网关WTGNet-LX

热门文章

  1. 【已解决】Html Webpack Plugin Error;html-withimg-loader无法正常解析html内的img
  2. abaqus软件模拟NiTi材料的人工肌肉
  3. GPU计算加速-cublas加速
  4. 《机械制造业智能工厂规划设计》——3.3 机械制造业智能工厂总体框架
  5. bilibili账号申诉中心_b站(bilibili)会员账号密码忘记了怎么办?申诉找回需要什么信息?...
  6. 天然气地下管道智慧应急指挥系统平台,24小时为你保驾护航
  7. 我的世界java我的世界启动侠_我的世界启动侠整合版下载
  8. 使用 Hexo 搭建自己的博客
  9. c语言字母倒金字塔编程,C语言倒金字塔编程.ppt
  10. Arduino SD库不能正常初始化SD卡的解决方法