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 相关文章推荐
ExtJS 2.0实用简明教程 之Ext类库简介
Apr 29 Javascript
提升你网站水平的jQuery插件集合推荐
Apr 19 Javascript
一个简单的弹性返回顶部JS代码实现介绍
Jun 09 Javascript
jquery左右滚动焦点图banner图片鼠标经过显示上下页按钮
Oct 11 Javascript
调试代码导致IE出错的避免方法
Apr 04 Javascript
JS实现浏览器状态栏文字闪烁效果的方法
Oct 27 Javascript
详解javascript立即执行函数表达式IIFE
Feb 13 Javascript
纯js的右下角弹窗实例
Mar 12 Javascript
Vue路由跳转问题记录详解
Jun 15 Javascript
Node.js+jade抓取博客所有文章生成静态html文件的实例
Sep 19 Javascript
详解JavaScript栈内存与堆内存
Apr 04 Javascript
uni-app 自定义底部导航栏的实现
Dec 11 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
全国FM电台频率大全 - 30 宁夏回族自治区
2020/03/11 无线电
php中通过数组进行高效随机抽取指定条记录的算法
2013/09/09 PHP
PHP正则替换函数preg_replace和preg_replace_callback使用总结
2014/09/22 PHP
php 如何获取文件的后缀名
2016/06/05 PHP
PHP接口并发测试的方法(推荐)
2016/12/15 PHP
javascript五图轮播切换实用版
2012/08/17 Javascript
jquery slibings选取同级其他元素的实现代码
2013/11/15 Javascript
javascript Deferred和递归次数限制实例
2014/10/21 Javascript
javascript框架设计读书笔记之模块加载系统
2014/12/02 Javascript
js格式化输入框内金额、银行卡号
2016/02/01 Javascript
Javascript 函数的四种调用模式
2016/11/05 Javascript
用Angular实时获取本地Localstorage数据,实现一个模拟后台数据登入的效果
2016/11/09 Javascript
JS实现倒计时(天数、时、分、秒)
2016/11/16 Javascript
js数组操作方法总结(必看篇)
2016/11/22 Javascript
微信小程序之MaterialDesign--input组件详解
2017/02/15 Javascript
表格展示利器 Bootstrap Table实例代码
2017/09/06 Javascript
JS实现的RC4加密算法示例
2018/08/16 Javascript
JS中判断字符串存在和非空的方法
2018/09/12 Javascript
微信小程序实现展示评分结果功能
2019/02/15 Javascript
JavaScript函数式编程(Functional Programming)箭头函数(Arrow functions)用法分析
2019/05/22 Javascript
jQuery提示框插件SweetAlert用法分析
2019/08/05 jQuery
vue中获取滚动table的可视页面宽度调整表头与列对齐(每列宽度不都相同)
2019/08/17 Javascript
构建Vue大型应用的10个最佳实践(小结)
2019/11/07 Javascript
python在windows下实现备份程序实例
2014/07/04 Python
Python通过解析网页实现看报程序的方法
2014/08/04 Python
Python实现二维有序数组查找的方法
2016/04/27 Python
Python wxPython库消息对话框MessageDialog用法示例
2018/09/03 Python
Python数据类型之String字符串实例详解
2019/05/08 Python
python爬虫模拟浏览器的两种方法实例分析
2019/12/09 Python
python标准库os库的函数介绍
2020/02/12 Python
css3 仿写阿里云水纹效果的示例代码
2018/02/10 HTML / CSS
瑞典时尚服装购物网站:Miinto.se
2017/10/30 全球购物
SIMON MILLER官网:洛杉矶的生活方式品牌
2020/10/19 全球购物
成人大专自我鉴定范文
2013/10/19 职场文书
酒店辞职书范文
2015/02/26 职场文书
教你使用VS Code的MySQL扩展管理数据库的方法
2022/01/22 MySQL