Vuex中mutations与actions的区别详解


Posted in Javascript onMarch 01, 2018

区分 actions 和 mutations 并不是为了解决竞态问题,而是为了能用 devtools 追踪状态变化。

事实上在 vuex 里面 actions 只是一个架构性的概念,并不是必须的,说到底只是一个函数,你在里面想干嘛都可以,只要最后触发 mutation 就行。异步竞态怎么处理那是用户自己的事情。

vuex 真正限制你的只有 mutation 必须是同步的这一点(在 redux 里面就好像 reducer 必须同步返回下一个状态一样)。同步的意义在于这样每一个 mutation 执行完成后都可以对应到一个新的状态(和 reducer 一样),这样 devtools 就可以打个 snapshot 存下来,然后就可以随便 time-travel 了。如果你开着 devtool 调用一个异步的 action,你可以清楚地看到它所调用的 mutation 是何时被记录下来的,并且可以立刻查看它们对应的状态。

亲测:如果在mutation中做了异步操作,在dev-tools中会立即打印一个snapshot,而此时异步操作还没有执行完,此时的snapshot的信息是错误的。

而在action中做异步操作dev-tools会等等异步操作执行完才去打印mutation的一个snapshot,这样便于我们回查time-travel,查看在某个mutation里的变化。

以上这篇Vuex中mutations与actions的区别详解就是小编分享给大家的全部内容了,希望能给大家一个参考,也希望大家多多支持三水点靠木。

Javascript 相关文章推荐
js模拟点击事件实现代码
Nov 06 Javascript
JS/FLASH实现复制代码到剪贴板(兼容所有浏览器)
May 27 Javascript
JS关键字球状旋转效果的实例代码
Nov 29 Javascript
解析Javascript中大括号“{}”的多义性
Dec 02 Javascript
js实现点击左右按钮轮播图片效果实例
Jan 29 Javascript
JavaScript中的依赖注入详解
Mar 18 Javascript
详解Bootstrap四种图片样式
Jan 04 Javascript
JavaScript程序开发之JS代码放置的位置
Jan 15 Javascript
AngularJs $parse、$eval和$observe、$watch详解
Sep 21 Javascript
微信小程序textarea层级过高的解决方法
Mar 04 Javascript
利用Electron简单撸一个Markdown编辑器的方法
Jun 10 Javascript
jquery实现两个div中的元素相互拖动的方法分析
Apr 05 jQuery
vue 实现剪裁图片并上传服务器功能
Mar 01 #Javascript
解决easyui日期时间框ie的兼容的问题
Mar 01 #Javascript
详解Immutable及 React 中实践
Mar 01 #Javascript
解决VUEX兼容IE上的报错问题
Mar 01 #Javascript
Node.js readline 逐行读取、写入文件内容的示例
Mar 01 #Javascript
基于Vuex无法观察到值变化的解决方法
Mar 01 #Javascript
Node.js readline模块与util模块的使用
Mar 01 #Javascript
You might like
PHP仿博客园 个人博客(1) 数据库与界面设计
2013/07/05 PHP
php给一组指定关键词添加span标签的方法
2015/03/31 PHP
php+ajax简单实现全选删除的方法
2016/12/06 PHP
php一个文件搞定微信jssdk配置
2016/12/12 PHP
javascript支持firefox,ie7页面布局拖拽效果代码
2007/12/20 Javascript
RGB颜色值转HTML十六进制(HEX)代码的JS函数
2009/04/25 Javascript
基于jQuery的树控件实现代码(asp.net+json)
2010/07/11 Javascript
jQuery实现下拉框左右选择的简单实例
2014/02/22 Javascript
使用GruntJS构建Web程序之安装篇
2014/06/04 Javascript
一个JavaScript防止表单重复提交的实例
2014/10/21 Javascript
Jquery实现顶部弹出框特效
2015/08/08 Javascript
详解Bootstrap的iCheck插件checkbox和radio
2016/08/24 Javascript
Iview Table组件中各种组件扩展的使用
2018/10/20 Javascript
Easyui 关闭jquery-easui tab标签页前触发事件的解决方法
2019/04/28 jQuery
js实现九宫格抽奖
2020/03/19 Javascript
Python实现处理逆波兰表达式示例
2018/07/30 Python
详解如何为eclipse安装合适版本的python插件pydev
2018/11/04 Python
python 返回一个列表中第二大的数方法
2019/07/09 Python
简单了解django缓存方式及配置
2019/07/19 Python
通过Python实现Payload分离免杀过程详解
2020/07/13 Python
纽约JewelryAffairs珠宝店:精细金银时尚首饰
2017/02/05 全球购物
Hotels.com台湾:饭店订房网
2017/09/06 全球购物
Java中有几种方法可以实现一个线程?用什么关键字修饰同步方法?stop()和suspend()方法为何不推荐使用?
2015/08/04 面试题
函授本科自我鉴定
2013/11/03 职场文书
班组长的岗位职责
2013/12/09 职场文书
汽车专业学生自我评价
2014/01/19 职场文书
中青班党性分析材料
2014/02/16 职场文书
装修设计师求职信
2014/02/26 职场文书
普通话宣传标语
2014/06/26 职场文书
基层党员干部四风问题整改方向和措施
2014/09/25 职场文书
2015年秋季新学期寄语
2015/03/25 职场文书
世界名著读书笔记
2015/06/25 职场文书
二婚主持词
2015/06/30 职场文书
原生JavaScript实现简单五子棋游戏
2021/06/28 Javascript
动态规划之使用备忘录来改进Javascript函数
2022/04/07 Javascript
大型强子对撞机再次重启探索“第五种自然力”
2022/04/29 数码科技