Redux 异步操作中间件 Redux-thunk

除了redux-thunk,还有哪些中间件可以处理异步操作? 在选择中间件时,考虑应用的复杂性和需求非常重要。对于简单的异步操作,或可能足够; 阅读详情

Redux 异步操作中间件 Redux-thunk

Redux同步修改状态数据时,Redux要求store.dispatch() 传递过来的action是个普通的js对象,这个对象用于描述对数据的操作

但是到了异步的时候,我们需要使用Redux的中间件Redux-thunk,当然中间件有很多。Redux-thunk只是其中的一个。
1.安装Redux-thunk

npm install --save redux-thunk

2.配置中间件:

import { createStore, applyMiddleware } from 'redux';
import thunk from 'redux-thunk';
import rootReducer from './reducers';
 
const store = createStore(
  rootReducer,
  applyMiddleware(thunk)
);

此时Redux要求store.dispatch() 传递过来的action是个函数。redux-thunk会判断传递过来的action类型,是否为函数,若为函数类型,则自动调用这个function,并返回dispatch,这样在异步操作的任何时刻都可以dispatch了。

redux-thunk 源码展示

function createThunkMiddleware(extraArgument) {
	  return function (_ref) {
	    var dispatch = _ref.dispatch,
	        getState = _ref.getState;
	    return function (next) {
	      return function (action) {
	        if (typeof action === 'function') {
	          return action(dispatch, getState, extraArgument);
	        }

	        return next(action);
	      };
	    };
	  };
	}

	var thunk = createThunkMiddleware();
	thunk.withExtraArgument = createThunkMiddleware;

3.如何使用

store.dispatch(
  changeFn()
);

function changFn () {
	return (dispatch,state)=>{
      axios.get('xx').then((res)=>{
            console.log('ajax请求成功了')
            dispatch()   
        }).catch(()=>{
            console.log('error');
        });
    }
}

总结:

redux的状态更改:

view——>actions——>reducer——>state变化——>view变化(同步)

view——>actions——>redux middleware——>actions——>reducer——>state变化——>view变化 (异步)

redux middleware就是在actions和reducer之间做了一些处理,不让store.dispatch 后立即到达reducer去修改状态。
异步的时候action了两次

react-封装reduxthunk异步请求样板代码 对redux-thunk异步Action的一个简单封装,减少样板代码 立即下载

相关推荐

风控IV、AUC、KS python计算代码

df_temp:数据集,Y:是否逾期标签,feas_list:需要计算IV的 变量。2、 按月和不同Y 下的 IV计算。

暮雨听轩的专栏 1618

TypeError: middleware is not a function

解决方案: jreact报错:middleware is not a function_百度知道

weixin_63896561的博客 1360

从零到一:在Ubuntu 20.04上搭建ROS1与PX4无人机开发环境

本文详细指导如何在Ubuntu 20.04系统上搭建完整的ROS1与PX4无人机开发环境。内容涵盖ROS Noetic安装、PX4固件源码编译、MAVROS通信桥接以及QGroundControl地面站的配置,并通过Gazebo仿真完成全链路联调测试,为无人机算法开发与验证提供稳定可靠的基础平台。

weixin_29292431的博客 167

react-study 使用react-devTools谷歌插件和Redux-thunk引入

react-devTools插件自行下载后拖拽到chrome中 redux-thunk安装:npm add redux-thunk 安装完thunk后准备使用,当引入redux-thunk提示 ** TypeError: middleware is not a function ** index.js文件下 import { createStore, compose, applyMiddleware } from 'redux' // 创建store 传入reducer import reducer

Pinkr28的博客 356

保姆级教程:用Unity为麒麟系统打包Linux应用(含路径权限全攻略)

本文提供了一份详细的Unity跨平台开发指南,重点介绍如何在麒麟系统上打包和部署Linux应用。从开发环境配置、路径权限处理到性能优化和常见问题解决,全面解析了Unity项目在国产操作系统上的适配流程,帮助开发者高效完成跨平台应用开发。

weixin_28692867的博客 504

汇川PLC用户程序结构详解:如何像搭积木一样配置多任务?附EtherCAT最佳实践

本文深入解析汇川PLC用户程序结构,阐述如何像搭积木一样,通过POU、FB、FC等模块化组件高效配置多任务。文章重点结合EtherCAT通讯场景,分享了任务周期、优先级设置的最佳实践与关键避坑指南,帮助工程师构建稳定、高效的运动控制系统。

weixin_29184075的博客 541

Redux中间件redux-thunk使用详解

redux-thunk主要用于处理reducer无法处理的异步1.什么是异步?同步:就是指前一个任务完成之后在继续执行下一个任务,程序的执行顺序与任务的排列顺序是一致的、同步的。异步:每一个任务有一个或多个回调函数(callback),前一个任务结束后,不执行下一个任务,而是执行回调函数,后一个任务不等前一个任务结束就执行,所以程序的执行顺序与任务的排列顺序是不一致的、异步的。2.异步通常会发生在比较复杂的功能使用中axios请求接口数据接口数据返回则为异步。

qq_38980678的博客 3320

在Unity3d使用yolov8的onnx模型

输出OUTPUTS是float32[1,35,8400],表示它会输出一个大小为[1, 35, 8400]的浮点数张量。这个输出张量的维度表示了检测到的目标的数量、每个目标的预测参数以及网格单元的数量。输出张量的第一个维度1表示检测到的目标数量。每个目标由35个值组成,表示目标的类别、置信度、边界框的坐标及10个特定点的位置。要取得8400个数据中置信度最高的数据,然后获取该数据其他channel的数据。运行结果:(蓝色是检测手的边框,红点是自定义的点),其中的四个数字分别表示不同的维度。

shenqingyu0605202324的博客 5603

如何正确安装使用redux-thunk

首先下载redux-thunknpm install redux-thunk --save 然后在创建store的地方使用 import { createStore, applyMiddleware, compose } from 'redux'; import thunk from 'redux-thunk'; import reducer from './reducer'; const co...

mini74的博客 563

喷涂机器人系列编程:ABB IRB 5500_(9).常见故障诊断与排除

ABB IRB 5500 喷涂机器人在实际应用中可能会遇到各种故障,但通过系统的诊断和排除方法,可以确保生产线的连续运行。定期维护和保养是预防故障的重要手段,而操作培训和规范则能有效减少人为因素引起的故障。希望本节内容能帮助操作和维护人员提高故障诊断和排除的效率,确保喷涂机器人的稳定运行。如果您有任何疑问或需要进一步的帮助,请联系 ABB 客户服务中心。

zhubeibei168的博客 1045

手把手教你学Simulink--基于Simulink的微电网用DC-DC变换器仿真建模

微电网概述微电网:包括可再生能源发电设备、储能系统和负载,可以独立于大电网运行,也可以并网运行。重要性提高能源可靠性:通过本地化供电减少对外部电网的依赖。促进可再生能源利用:支持高效整合多种可再生能源。挑战多源管理:不同类型的能源产生方式各异,需设计灵活的电源管理系统。能量转换效率:需要高效的能量转换装置来确保能源的有效利用。通过上述步骤,我们简要介绍了如何基于Simulink进行微电网中DC-DC变换器的仿真建模。

MHD0815的博客 161

react 和redux集成报TypeError: Object(...) is not a function

今天集成react和redux时,突然报TypeError: Object(...) is not a function,查了很久都没有找到与自己写的代码有关系的地方。猜测应该是version不匹配。就找出最近集成成功的项目,发现react-redux^7.0.1降级到6.0.1,就不会有问题。记录下来供自己和别人参考。 转载于:https://juejin.im/post/5cb45b86e...

weixin_34205076的博客 4310

通信原理 | 随机数仿真 | 均匀、正态、双高斯、瑞利、莱斯、对数正态、nakagami、Suzuki分布的随机数仿真(matlab)

信道建模在通信系统设计和分析中扮演着至关重要的角色。它指的是使用数学和物理模型来描述和模拟无线或有线通信路径中的信号传播特性。

若北辰 1985

Redux中间件——Redux-thunk

Redux-thunk是作为redux的middleware存在的,thunk是函数编程界的一个专有名词,主要用于,也就是延迟计算。//内部返回的函数就叫thunk return function thunk() {console . log('thunk running,arg:' , arg) } } //我们通过调用wrapper来获得thunk const thunk = wrapper('warpper arg') //然后在需要的地方再去执行thunk thunk()

lxk116688的博客 1329

LinePhone3.2.7(android端最新版本) sip客户端

SIP客户端For android:LinePhone3.2.7(最新版本),官网地址:http://www.linphone.org/

SIMATIC S7-1200, S7-1500 PID 控制[手册]

SIMATIC S7-1200, S7-1500 PID 控制[手册]

Redux Thunk 中间件

🤍 前端开发工程师、技术日更博主、已过CET6🍨、23年度博客之星前端领域TOP1🕠高级专题作者、打造专栏🍚签约作者、上架课程。

你若盛开,清风自来 1081

ssm框架搭建

这个是一个在idea上成功跑起来的ssm框架项目,保存在这里方便以后使用直接下载

Redux 中间件

目录 1.中间件概述 Redux 中间件作用: 中间件说明: 2.中间件的触发时机 3.redux-logger中间件 4.redux-thunk中间件 1.不使用 redux-thunk 中间件,action 只能是一个对象 2.使用 redux-thunk 中间件后,action 既可以是对象,又可以是函数 5.了解:redux-thunk中间件原理 6.redux-devtools-extension中间件 7.了解:redux 中间件原理 8.理解Redux异步数据流 ..

m0_62118859的博客 4393

温度PID控制PLC程序

温度PID稳定控制程序,适用于欧姆龙PLC,对其他PLC也具有很大参考价值

redux中间件redux-thunk的作用

redux的dispatch默认只能传一个对象参数: dispatch({ type: 'CHANGE_COLOR', themeColor: color }) redux-thunk的作用就是使dispatch支持传函数参数: dispatch(changeColorAsyn(color)) 给redux配置thunk也很简单: import { createStore, a...

徐同保的专栏 5137

Redux 异步操作指南:使用 redux-thunk 和 redux-saga

Redux 本身是不支持异步操作的,但是可以通过中间件来实现异步任务。最常用的中间件就是 redux-thunk 和 redux-saga。

笔记、经验、日常分享 971

Redux中间件之redux-thunk使用详解

Redux的核心概念其实很简单:将需要修改的state都存入到store里,发起一个action用来描述发生了什么,用reducers描述action如何改变state tree 。创建store的时候需要传入reducer,真正能改变store中数据的是store.dispatch API。 1.概念dispatch一个action之后,到达reducer之前,进行一些额外的操作,就...

hsany330的专栏 7426

REDUX 中间件

redux的基础使用:用户dispatch一个action,reducer计算出新的state,更新视图。 同步操作:用户发出action,reducer立即计算出state,更新视图。异步操作期望的是:发出action,异步操作结束之后,期望自动执行reducer函数,更新视图。这就要使用中间件(middleware) 1.中间件的用法 中间件是在store.dispatch时添加功能。 const store = createStore( reducer, applyMiddleware(log

weixin_38208314的博客 126

redux-thunk的简单使用

thunk 我们常常需要在redux中实现异步的数据获取等操作,这个时候就可以用到thunk 1、安装thunk yarn add redux-thunk 2、创建store的时候引入中间件和配置 import {createStore,applyMiddleware} from 'redux' import reducer from './reducer' import thunk from 'redux-thunk' let middleWares = applyMiddleware(thunk)

Angeladaddy007的博客 1023

React学习之Redux中间件redux-thunk及redux-saga

Redux中间件及异步操作 中间件的概念 如果要添加redux的异步功能,你会在哪个环境添加? (1)Reducer:纯函数,只承担计算 State 的功能,不合适承担其他功能,也承担不了,因为理论上,纯函数不能进行读写操作。 (2)View:与 State 一一对应,可以看作 State 的视觉层,也不合适承担其他功能。 (3)Action:存放数据的对象,即消息的载体,只能被别人操作,自己不能进行任何操作。 只有发送 Action 的这个步骤,即store.dispatch()方法,可以添加功能。 中间

King的博客 919

redux中间件来执行异步操作

  在redux中我们都是执行同步操作,如果我们想要执行异步操作,那么我们就需要依赖到中间件,具体的中间件的概念我就不描述了相信官方文档更详尽。现在就描述下具体的用法,就已我们项目中用到的最多的数据请求为例来进行描述。   redux如果需要使用异步操作,那么就需要使用中间件,而redux自带着一些中间件的用法,在store中可以在createStore中传入我们的中间件,但在之前需要先引入对应...

weixin_30596165的博客 107

整理一下react的知识点之redux-thunk中间件的基本使用(持续更新)

1. redux-thunk的作用: Redux store 仅支持同步数据流。使用redux-thunk中间件可以帮助在 Redux 应用中实现异步性。 redux-thunk中间件允许redux处理函数形式的action。在函数形式的 action 中就可以执行异步操作代码,完成异步操作。 2. 使用步骤 2.1 下载相关包: npm i redux react-redux redux-thunk 2.2 使用: 如下所示: 在store/index.js 中导入使用即可 impo.

数组喜欢打对象的博客 1000

redux 中 redux-thunk 中间件的使用

其实博主第一次接触中间件 是在node中 接触并用到的 后来再碰见 redux中的中间件 其实 理解起来也没那么复杂了 其实中间件 就可以看做是一个函数 在达到我们的目的之前处理一些逻辑 就把他看成一个函数 然后做一些事情 就可以了 1. 第一步还是老样子 就是安装了 npm i react-thunk --save 2. 然后就是配置了 因为我的电脑上装了 redux devtools 开发工具 所以就搞了一个 增强函数 可以用来执行两个函数 函数的作用 因...

业余前端的职业经历 560

redux-thunk的使用和原理

redux-thunk是一个redux中间件,原理如下 function createThunkMiddleware(extraArgument) { return ({ dispatch, getState }) => (next) => (action) => { if (typeof action === 'function') { return a...

前端精髓 2310
上一篇: Vue React 各种大乱炖 对比
下一篇: mysql 使用JSON_EXTRACT() 取json值
cofecode
博客等级 码龄9年 43粉丝 102原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值