我的编程空间,编程开发者的网络收藏夹
学习永远不晚

Redux中异步action与同步action的使用

短信预约 -IT技能 免费直播动态提醒
省份

北京

  • 北京
  • 上海
  • 天津
  • 重庆
  • 河北
  • 山东
  • 辽宁
  • 黑龙江
  • 吉林
  • 甘肃
  • 青海
  • 河南
  • 江苏
  • 湖北
  • 湖南
  • 江西
  • 浙江
  • 广东
  • 云南
  • 福建
  • 海南
  • 山西
  • 四川
  • 陕西
  • 贵州
  • 安徽
  • 广西
  • 内蒙
  • 西藏
  • 新疆
  • 宁夏
  • 兵团
手机号立即预约

请填写图片验证码后获取短信验证码

看不清楚,换张图片

免费获取短信验证码

Redux中异步action与同步action的使用

异步action

  • action:Object{} => 同步action
  • action:function() => 异步action
 同步action异步action
类型Object类型的对象function()函数
dispatch(action)同步的action被dispatch到store后;
store直接将其交给reducer加工。
异步的action函数被dispatch到store后;
store会先调用这个函数,等待异步任务结束。
   

在这里插入图片描述

store监测到传入的action是一个一般对象,那么store就知道这是一个同步的action,store就会把这个action交给Reducers去加工,执行。

但是store若监测到传入的action是一个函数,那么store就知道这是一个异步的action,store就会配合中间件,先调用这个函数。等到函数内的异步任务结束,再调用函数内部的同步的dispatch,再交给Reducers去加工状态。同时,store调用这个包裹着异步任务的函数时,会传入一个dispatch方法作为函数的参数,以供函数内部异步任务结束时使用这个同步的dispatch。

中间件(Middleware):redux-thunk

安装中间件:

npm install redux-thunk
// 或
yarn add redux-thunk

引入中间件:

既然中间件是配合store使用的,那么当然是在store中引入并使用这个中间件

store.js:


// 引入createStore,专门用于创建redux中最为核心的store对象
import { legacy_createStore as createStore, applyMiddleware } from 'redux';
// 引入为Count组件服务的reducer
import countReducer from './count_reducer'
// 引入redux-thunk,用于支持异步action
import thunk from 'redux-thunk'
// 暴露store
export default createStore(countReducer, applyMiddleware(thunk))

代码解释:

applyMiddleware是redux中用于执行中间件的函数;

引入redux-thunk中间件;

在creaetStore时,将applyMiddleware传入作为createStore的第二个参数;

applyMiddleware本身是一个函数,用于执行中间件,所以要把(thunk)传入applyMiddleware这个函数。

applyMiddleware(thunk)含义是:执行thunk这个中间件。

这样一来,store就会在接收到一个函数类型的action时,去调用这个action对应的函数。

并且,异步action中一般都会调用同步的action,所以store在调用这个异步action对应的函数时,会传入dispatch方法作为参数,以供异步任务结束后,使用这个dispatch方法调用同步的action。

count_action_creator.js:


import { INCREMENT, DECREMENT } from './constant'
// 同步action,就是指action的值为Object对象
export const createIncrementAction = data => ({ type: INCREMENT, data })
// ({ type: 'increment', data }) 相当于 { return { type: 'increment', data } }
export const createDecrementAction = data => ({ type: DECREMENT, data })

// 异步action,就是指action的值是函数
export const createIncrementAsyncAction = (data, time) => {
  return (dispatch) => {
    setTimeout(() => {
      dispatch(createIncrementAction(data))
    }, time)
  }
}

在Count组件中调用这个函数:

incrementAsync = () => {
  const { value } = this.selectedNumber
  store.dispatch(createIncrementAsyncAction(value * 1, 500))
}

异步action总结:

延迟的动作不想交给组件自身,想交给action时,可以使用异步的action
(但异步action并不是必须的);

何时需要异步action:
想对状态进行操作,但是具体的数据靠异步任务返回;

具体编码:

npm install redux-thunk

yarn add redux-thunk安装中间件

创建action的函数不再返回一个一般对象,而是返回一个函数,该函数中写异步任务;

异步任务有结果后,使用store传入的dispatch参数分发一个同步的action去真正操作数据

备注:异步action不是必须要写的,完全可以自己在组件中等待异步任务的结果之后再去分发同步action。

 到此这篇关于Redux中异步action与同步action的使用的文章就介绍到这了,更多相关Redux 异步action与同步action内容请搜索编程网以前的文章或继续浏览下面的相关文章希望大家以后多多支持编程网!

免责声明:

① 本站未注明“稿件来源”的信息均来自网络整理。其文字、图片和音视频稿件的所属权归原作者所有。本站收集整理出于非商业性的教育和科研之目的,并不意味着本站赞同其观点或证实其内容的真实性。仅作为临时的测试数据,供内部测试之用。本站并未授权任何人以任何方式主动获取本站任何信息。

② 本站未注明“稿件来源”的临时测试数据将在测试完成后最终做删除处理。有问题或投稿请发送至: 邮箱/279061341@qq.com QQ/279061341

Redux中异步action与同步action的使用

下载Word文档到电脑,方便收藏和打印~

下载Word文档

猜你喜欢

ASP.NET MVC使用异步Action的方法

这篇文章介绍了ASP.NET MVC使用异步Action的方法,文中通过示例代码介绍的非常详细。对大家的学习或工作具有一定的参考借鉴价值,需要的朋友可以参考下
2022-11-13

ASP.NET基于事件的异步模式与异步Action怎么实现

本篇内容主要讲解“ASP.NET基于事件的异步模式与异步Action怎么实现”,感兴趣的朋友不妨来看看。本文介绍的方法操作简单快捷,实用性强。下面就让小编来带大家学习“ASP.NET基于事件的异步模式与异步Action怎么实现”吧!尽管在A
2023-06-17

React中setState如何使用与如何同步异步

这篇文章主要介绍“React中setState如何使用与如何同步异步”,在日常操作中,相信很多人在React中setState如何使用与如何同步异步问题上存在疑惑,小编查阅了各式资料,整理出简单好用的操作方法,希望对大家解答”React中s
2023-06-14

Java中的同步与异步的概念

这篇文章主要讲解了“Java中的同步与异步的概念”,文中的讲解内容简单清晰,易于学习与理解,下面请大家跟着小编的思路慢慢深入,一起来研究和学习“Java中的同步与异步的概念”吧!一.进程同步及异步的概念1.进程同步:就是在发出一个功能调用时
2023-05-30

Android中同步与异步的关系是什么

本篇文章为大家展示了Android中同步与异步的关系是什么,内容简明扼要并且容易理解,绝对能使你眼前一亮,通过这篇文章的详细介绍希望你能有所收获。android 只有UI线程可以刷新界面,其他副线程不行,这样就需要副线程通过通信消息修改刷新
2023-06-19

Node.js中同步和异步编程的区别及使用方法

在Node.js中,同步和异步编程是两种不同的处理方式。同步方式会阻塞程序的执行,而异步方式则不会。通过掌握它们的区别和使用方法,可以更好地实现程序的性能优化和功能扩展。同时,需要注意异步编程中的回调地狱问题,使用Promise可以更好地处理异步编程
2023-05-18

Python中的同步异步阻塞与非阻塞是什么

今天小编给大家分享一下Python中的同步异步阻塞与非阻塞是什么的相关知识点,内容详细,逻辑清晰,相信大部分人都还太了解这方面的知识,所以分享这篇文章给大家参考一下,希望大家阅读完这篇文章后有所收获,下面我们一起来了解一下吧。一、状态介绍在
2023-07-05

Java中使用同步回调和异步回调的示例详解

这篇文章主要介绍了Java中使用同步回调和异步回调的相关资料,本文通过实例代码给大家介绍的非常详细,对大家的学习或工作具有一定的参考借鉴价值,需要的朋友可以参考下
2023-05-16

java中的异步交互与同步交互的区别是什么

同步交互:指发送一个请求,需要等待返回,然后才能够发送下一个请求,有个等待过程。异步交互:指发送一个请求,不需要等待返回,随时可以再发送下一个请求,即不需要等待。免费视频教程推荐:java免费视频教程两者区别:一个需要等待,一个不需要等待,在部分情况下,我们的
java中的异步交互与同步交互的区别是什么
2022-04-30

Vue中的同步和异步调用顺序是什么

今天小编给大家分享一下Vue中的同步和异步调用顺序是什么的相关知识点,内容详细,逻辑清晰,相信大部分人都还太了解这方面的知识,所以分享这篇文章给大家参考一下,希望大家阅读完这篇文章后有所收获,下面我们一起来了解一下吧。Vue的同步和异步调用
2023-06-28

编程热搜

目录