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 与或运算符 || && 妙用
Dec 09 Javascript
Jquey拖拽控件Draggable使用方法(asp.net环境)
Sep 28 Javascript
JS打开新窗口的2种方式
Apr 18 Javascript
Javascript和Java获取各种form表单信息的简单实例
Feb 14 Javascript
Javascript模拟加速运动与减速运动代码分享
Dec 11 Javascript
JavaScript模拟深蓝vs卡斯帕罗夫的国际象棋对局示例
Apr 22 Javascript
jQuery构造函数init参数分析
May 13 Javascript
Angularjs使用directive自定义指令实现attribute继承的方法详解
Aug 05 Javascript
js学习之----深入理解闭包
Nov 21 Javascript
基于vue-cli配置lib-flexible + rem实现移动端自适应
Dec 26 Javascript
详解如何解决Vue和vue-template-compiler版本之间的问题
Sep 17 Javascript
SSM+layUI 根据登录信息显示不同的页面方法
Sep 20 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
Wordpress 相册插件 NextGEN-Gallery 添加目录将中文转为拼音的解决办法
2010/12/29 PHP
PhpMyAdmin出现export.php Missing parameter: what /export_type错误解决方法
2012/08/09 PHP
PHP设置进度条的方法
2015/07/08 PHP
对比分析php中Cookie与Session的异同
2016/02/19 PHP
PHP基于rabbitmq操作类的生产者和消费者功能示例
2018/06/16 PHP
Yii2框架实现利用mpdf创建pdf文件功能示例
2019/02/08 PHP
php写入mysql中文乱码的实例解决方法
2019/09/17 PHP
Laravel 框架返回状态拦截代码
2019/10/18 PHP
浅谈laravel数据库查询返回的数据形式
2019/10/21 PHP
Jquery实现图片放大镜效果的思路及代码(自写)
2013/10/18 Javascript
网页下载文件期间如何防止用户对网页进行其他操作
2014/06/27 Javascript
javascript定时器完整实例
2015/02/10 Javascript
JS修改iframe页面背景颜色的方法
2015/04/01 Javascript
jquery实现兼容IE8的异步上传文件
2015/06/15 Javascript
javascript中闭包(Closure)详解
2016/01/06 Javascript
基于Vue如何封装分页组件
2016/12/16 Javascript
JavaScript箭头函数_动力节点Java学院整理
2017/06/28 Javascript
bootstrap实现点击删除按钮弹出确认框的实例代码
2018/08/16 Javascript
[59:30]完美世界DOTA2联赛PWL S3 access vs LBZS 第二场 12.20
2020/12/23 DOTA
Python批量更改文件名的实现方法
2017/10/29 Python
Python实现的人工神经网络算法示例【基于反向传播算法】
2017/11/11 Python
python实现转圈打印矩阵
2019/03/02 Python
详解Python中的测试工具
2019/06/09 Python
Python Django 简单分页的实现代码解析
2019/08/21 Python
Python CSV文件模块的使用案例分析
2019/12/21 Python
python怎么对数字进行过滤
2020/07/05 Python
Python数据可视化实现漏斗图过程图解
2020/07/20 Python
html5 更新图片颜色示例代码
2014/07/29 HTML / CSS
SmartBuyGlasses中国:唯视良品(销售名牌太阳镜、墨镜和眼镜框)
2017/07/03 全球购物
简历中个人求职的自我评价模板
2013/11/29 职场文书
企业门卫岗位职责
2013/12/12 职场文书
自我评价如何写好?
2014/01/05 职场文书
大学生助学金感谢信
2015/01/21 职场文书
毕业论文致谢词
2015/05/14 职场文书
关于远足的感想
2015/08/10 职场文书
mysql获取指定时间段中所有日期或月份的语句(不设存储过程,不加表)
2021/06/18 MySQL