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 相关文章推荐
HTML-CSS群中单选引发的“事件”
Mar 05 Javascript
[原创]js与自动伸缩图片 自动缩小图片的多浏览器兼容的方法总结
Mar 12 Javascript
Jsonp 跨域的原理以及Jquery的解决方案
Jun 27 Javascript
sencha touch 模仿tabpanel导航栏TabBar的实例代码
Oct 24 Javascript
node.js下when.js 的异步编程实践
Dec 03 Javascript
基于jQuery.validate及Bootstrap的tooltip开发气泡样式的表单校验组件思路详解
Jul 18 Javascript
Vue数据驱动模拟实现4
Jan 12 Javascript
JS正则验证多个邮箱完整实例【邮箱用分号隔开】
Apr 19 Javascript
javascript 取小数点后几位几种方法总结
Aug 02 Javascript
bootstrap中日历范围选择插件daterangepicker的使用详解
Apr 17 Javascript
layui实现数据分页功能
Jul 27 Javascript
JS实现鼠标移动拖尾
Dec 27 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示例演示发送邮件给某个邮箱
2019/04/03 PHP
IE8下关于querySelectorAll()的问题
2010/05/13 Javascript
Javascript 自适应高度的Tab选项卡
2011/04/05 Javascript
jquery选择器、属性设置用法经验总结
2013/09/08 Javascript
event对象获取方法总结在google浏览器下测试
2013/11/03 Javascript
学习JavaScript设计模式之模板方法模式
2016/01/20 Javascript
localStorage的黑科技-js和css缓存机制
2017/02/06 Javascript
Webpack打包慢问题的完美解决方法
2017/03/16 Javascript
基于rollup的组件库打包体积优化小结
2018/06/18 Javascript
JavaScript模板引擎实现原理实例详解
2018/12/14 Javascript
JavaScript实现的鼠标跟随特效示例【2则实例】
2018/12/22 Javascript
vue中$nextTick的用法讲解
2019/01/17 Javascript
微信小程序实现左右列表联动
2020/05/19 Javascript
js中Generator函数的深入讲解
2019/04/07 Javascript
浅谈JavaScript闭包
2019/04/09 Javascript
详解Vue+Element的动态表单,动态表格(后端发送配置,前端动态生成)
2019/04/20 Javascript
es6函数之尾调用优化实例分析
2020/04/25 Javascript
基于VUE实现判断设备是PC还是移动端
2020/07/03 Javascript
JavaScript快速调试的两个技巧
2020/11/04 Javascript
Python 搭建Web站点之Web服务器网关接口
2016/11/06 Python
python获取代码运行时间的实例代码
2018/06/11 Python
pycharm重置设置,恢复默认设置的方法
2018/10/22 Python
Python实用库 PrettyTable 学习笔记
2019/08/06 Python
python实现递归查找某个路径下所有文件中的中文字符
2019/08/31 Python
django中的图片验证码功能
2019/09/18 Python
python创建学生成绩管理系统
2019/11/22 Python
python将四元数变换为旋转矩阵的实例
2019/12/04 Python
tensorboard实现同时显示训练曲线和测试曲线
2020/01/21 Python
彪马西班牙官网:PUMA西班牙
2019/06/18 全球购物
日本航空官方网站:JAL
2019/06/19 全球购物
世界上最好的野生海鲜和有机食品:Vital Choice
2020/01/16 全球购物
State Cashmere官网:半零售价可持续蒙古羊绒
2020/02/26 全球购物
高中军训感想300字
2014/03/04 职场文书
比较node.js和Deno
2021/04/27 Javascript
Python中zipfile压缩包模块的使用
2021/05/14 Python
Python绘制地图神器folium的新人入门指南
2021/05/23 Python