react中dispatch_react-redux中连续两次dispatch-actions有顺序吗?
本人看过redux的源码。你的问题跟桥接库react-redux这个库无关,单纯跟核心库redux有关。dispatch方法的实现代码很简单:
if (isDispatching) {
throw new Error('Reducers may not dispatch actions.')
}
try {
isDispatching = true
currentState = currentReducer(currentState, action)
} finally {
isDispatching = false
}
const listeners = (currentListeners = nextListeners)
for (let i = 0; i < listeners.length; i++) {
const listener = listeners[i]
listener()
}
可以看出在dispatch方法的内部实现中,是先算出最新的state后,再通知所有的订阅者,这是一个同步的过程。而多个dispatch()的调用也是同步的,标志位isDispatching就是一个佐证。
如果你正在使用的是原生的dispatch方法(也就是说没有被中间件增强过),那么你连续dispatch连个action,大概是这么一个同步流程:dispatch({type: "A"});
根据{type: "A"}来计算出最新的stateA
把最新的stateA给到所有的订阅者(订阅者一般负责更新界面)
完
dispatch({type: "B"});
根据{type: "B"}来计算出最新的stateB
把最新的stateB给到所有的订阅者
完
只要你现在是在我上面所说的前提下,并且你保证你上面提到的两条语句的执行
const status = yield select((state) => state.status);
const data = yield select((state) => state.data);
是在连续的dispatch调用之后,那么就不会出现你所说的“我从store里取到status是succeed,但是数据是空的,也就是data是空的。”的情况。
react中dispatch_react-redux中连续两次dispatch-actions有顺序吗?相关推荐
- JAVA中如何交换两个List集合的顺序呢?
在JAVA中我们该如何交换两个List集合的顺序呢? /*** 交换两个集合的顺序* * @param a a集合* @param b b集合*/public static void swapList ...
- 【React+TS】从零开始搭建react+typescript+router+redux+less+px2rem自适应+sass+axios反向代理+别名@+Antd-mobile
一.通过create-react-app脚手架创建项目 npx create-react-app testproject --template typescript 在vscode中打开项目,可以看到 ...
- 【React+TS】从零开始搭建react+typescript+router+redux+less+pxToVw自适应+sass+axios反向代理+别名@+Antd-mobile
一.通过create-react-app脚手架创建项目 npx create-react-app testproject --template typescript 在vscode中打开项目,可以看 ...
- 连续两年!PingCAP 入选 Gartner 云数据库“客户之声”,获评“卓越表现者”最高分
近日,全球权威信息技术研究与咨询机构 Gartner 发布了云数据库市场领域 2023 Gartner® Peer Insights™"Voice of the Customer" ...
- 优雅的在React项目中使用Redux
概念 首先我们会用到哪些框架和工具呢? React UI框架 Redux 状态管理工具,与React没有任何关系,其他UI框架也可以使用Redux react-redux React插件,作用:方便在 ...
- 如何优雅地在React项目中使用Redux
前言 或许你当前的项目还没有到应用Redux的程度,但提前了解一下也没有坏处,本文不会安利大家使用Redux 概念 首先我们会用到哪些框架和工具呢? React UI框架 Redux 状态管理工具,与 ...
- Redux中的功能式React式编程简介
by Bhuvan Malik 通过布凡·马利克(Bhuvan Malik) Redux中的功能式React式编程简介 (An introduction to functional Reactive ...
- 如何react中使用redux和react-redux
Redux Redux 是 JavaScript 状态容器,提供可预测化的状态管理. 可以让你构建一致化的应用,运行于不同的环境(客户端.服务器.原生应用),并且易于测试. 不仅于此,它还提供 超爽的 ...
- 优雅的在React项目中使用Redux 1
或许你当前的项目还没有到应用Redux的程度,但提前了解一下也没有坏处 首先我们会用到哪些框架和工具呢? React UI框架 Redux 状态管理工具,与React没有任何关系,其他UI框架也可以使 ...
- 如何在React Native中使用Redux Saga监视网络更改
by Pritish Vaidya 通过Pritish Vaidya 如何在React Native中使用Redux Saga监视网络更改 (How to monitor network change ...
最新文章
- JavaScript面向对象中的严格模式
- html table相关标签和属性
- 人工神经网络 说到底,人就是一种机器吗?
- VC/VS开发问题集锦
- 材料真的是朝阳行业吗?
- 如何在 Mac 上设置和使用快捷方式?
- PMP第十章:项目沟通管理
- 【python学习】python实现利用pygame绘画基本图形、显示图片,实现图形图片随机效果。python绘制行列图片
- mac读取ntfs移动硬盘
- 日记(菜的连比赛都参加不了)
- FIL新一轮上涨:FIL算力通证迎来新热潮
- 2021年最新最全Flink系列教程_Flink快速入门(概述,安装部署)(一)(JianYi收藏)
- Arduino Uno + PAJ7620U2 实现手势识别控制LED灯工作
- html发票页面,HTML5 发票模板
- Operand of null-aware operation ‘!‘ has type ‘SchedulerBinding‘ which excludes null.
- Linux基础学习Day2之基本概念及操作
- iOS开发中使用UILabel设置字体的相关技巧小结
- java gis 最短路径_用Postgis算最短路径(在任意位置选择起点终点)(下)
- 代码零改动Serverless架构升级?
- CBE可表示计算机辅助教育,计算机辅助教育(CBE)的理论基础概述
热门文章
- 3.0_Linux如何连接网络
- 二级域名怎么设置_杭州360关键词优化怎么做,360SEO优化_万推霸屏
- 什么是前端开发工程师
- mac接收gmail邮件_如何从您的Gmail帐户发送和接收Hotmail
- 一篇文章带你看遍Google I/O 2019大会
- BUG记录:org.xml.sax.SAXParseException; lineNumber: 1; columnNumber: 1; Content is no
- Linq中Skip和Take用法(TakeWhile和SkipWhile用法)
- 计算机中丢失XINPUT无法修复,xinput1_3.dll丢失怎么修复
- 计算机缓存设置方法,如何清除电脑缓存?清除电脑缓存方法介绍
- oracle 11g crsd ocssd,[Oracle 11g r2(11.2.0.4.0)]集群守护进程gipc介绍