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 相关文章推荐
用Javascript实现Sleep暂停功能代码
Sep 03 Javascript
js复制到剪切板的实例方法
Jun 28 Javascript
JS去除重复并统计数量的实现方法
Dec 15 Javascript
babel基本使用详解
Feb 17 Javascript
js实现移动端导航点击自动滑动效果
Jul 18 Javascript
js操作table中tr的顺序实现上移下移一行的效果
Nov 22 Javascript
Vue.js上传图片到阿里云OSS存储的方法示例
Dec 13 Javascript
详解@Vue/Cli 3 Invalid Host header 错误解决办法
Jan 02 Javascript
vue-router二级导航切换路由及高亮显示的实现方法
Jul 10 Javascript
layui插件表单验证提交触发提交的例子
Sep 09 Javascript
js实现星星打分效果
Jul 05 Javascript
Vue生命周期activated之返回上一页不重新请求数据操作
Jul 26 Javascript
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 的几个配置文件函数
2006/12/21 PHP
$_GET['goods_id']+0 的使用详解
2013/06/06 PHP
PHP封装CURL扩展类实例
2015/07/28 PHP
深入剖析PHP中printf()函数格式化使用
2016/05/23 PHP
PHP生成各种随机验证码的方法总结【附demo源码】
2017/06/05 PHP
PHP按符号截取字符串的指定部分的实现方法
2018/09/10 PHP
浅谈thinkphp的nginx配置,以及重写隐藏index.php入口文件方法
2019/10/12 PHP
jQuery DOM操作小结与实例
2010/01/07 Javascript
jquery 全局AJAX事件使用代码
2010/11/05 Javascript
jQuery过滤选择器:not()方法使用介绍
2014/04/20 Javascript
node.js中的fs.lchmodSync方法使用说明
2014/12/16 Javascript
jQuery中noConflict()用法实例分析
2015/02/08 Javascript
JavaScript操作HTML元素和样式的方法详解
2015/10/21 Javascript
JavaScript获取function所有参数名的方法
2015/10/30 Javascript
Bootstarp基本模版学习教程
2017/02/01 Javascript
Node.js自定义实现文件路由功能
2017/09/22 Javascript
ES6 迭代器(Iterator)和 for.of循环使用方法学习(总结)
2018/02/08 Javascript
浅谈vuex中store的命名空间
2019/11/08 Javascript
js将URL网址转为16进制加密与解密函数
2020/03/04 Javascript
JS如何判断对象是否包含某个属性
2020/08/29 Javascript
[01:33]一分钟玩转DOTA2第三弹:DOTA2&DotA快捷操作大对比
2014/06/04 DOTA
[18:16]sakonoko 2017年卡尔集锦
2018/02/06 DOTA
[51:06]DOTA2-DPC中国联赛 正赛 Elephant vs Aster BO3 第二场 1月26日
2021/03/11 DOTA
python中dict字典的查询键值对 遍历 排序 创建 访问 更新 删除基础操作方法
2018/09/13 Python
python环境路径配置以及命令行运行脚本
2019/04/02 Python
Python3.7 新特性之dataclass装饰器
2019/05/27 Python
Python Django2.0集成Celery4.1教程
2019/11/19 Python
Python如何读取文件中图片格式
2020/01/13 Python
Python3 字典dictionary入门基础附实例
2020/02/10 Python
Python yield生成器和return对比代码实例
2020/04/20 Python
python3访问字典里的值实例方法
2020/11/18 Python
梅西百货澳大利亚:Macy’s Australia
2017/07/26 全球购物
美国在线乐器和设备商店:Musician’s Friend
2018/07/06 全球购物
索引覆盖(Index Covering)查询含义
2012/02/18 面试题
星空联盟C# .net笔试题
2014/12/05 面试题
Opencv实现二维直方图的计算及绘制
2021/07/21 Python