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 相关文章推荐
Jquery升级新版本后选择器的语法问题
Jun 02 Javascript
动态加载图片路径 保持JavaScript控件的相对独立性
Sep 06 Javascript
页面装载js及性能分析方法介绍
Mar 21 Javascript
浅谈Jquery核心函数
Jun 18 Javascript
JS根据key值获取URL中的参数值及把URL的参数转换成json对象
Aug 26 Javascript
js实现图片无缝滚动特效
Mar 19 Javascript
Bootstrap实现各种进度条样式详解
Apr 13 Javascript
解决vuejs 使用value in list 循环遍历数组出现警告的问题
Sep 26 Javascript
基于Vue-Cli 打包自动生成/抽离相关配置文件的实现方法
Dec 09 Javascript
vue学习之Vue-Router用法实例分析
Jan 06 Javascript
vue实现选中效果
Oct 07 Javascript
JavaScript parseInt0.0000005打印5原理解析
Jul 23 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
用mysql触发器自动更新memcache的实现代码
2009/10/11 PHP
PHP自定session保存路径及删除、注销与写入的方法
2014/11/18 PHP
php定时执行任务设置详解
2015/02/06 PHP
PHP编程求最大公约数与最小公倍数的方法示例
2017/05/29 PHP
PHP实现类似于C语言的文件读取及解析功能
2017/09/01 PHP
iframe 上下滚动条如何默认在下方实现原理
2012/12/10 Javascript
浅析tr的隐藏和显示问题
2014/03/05 Javascript
jquery滚动加载数据的方法
2015/03/09 Javascript
JavaScript给按钮绑定点击事件(onclick)的方法
2015/04/07 Javascript
jQuery使用animate创建动画用法实例
2015/08/07 Javascript
根据user-agent判断蜘蛛代码黑帽跳转代码(js版与php版本)
2015/09/14 Javascript
详解Document.Cookie
2015/12/25 Javascript
AngularJS中的Directive实现延迟加载
2016/01/25 Javascript
Bootstrap基本组件学习笔记之input输入框组(9)
2016/12/07 Javascript
详解jQuery简单的表单应用
2016/12/16 Javascript
jquery 校验中国身份证号码实例详解
2017/04/11 jQuery
angular2中Http请求原理与用法详解
2018/01/11 Javascript
JavaScript实现字符串与HTML格式相互转换
2020/03/17 Javascript
OpenLayers加载缩放控件使用方法详解
2020/09/25 Javascript
详解React路由传参方法汇总记录
2020/11/29 Javascript
[14:24]Optic Gaming vs PSG LGD BO3
2018/06/07 DOTA
Python中利用原始套接字进行网络编程的示例
2015/05/04 Python
在Python中操作列表之list.extend()方法的使用
2015/05/20 Python
python挖矿算力测试程序详解
2019/07/03 Python
python tkinter图形界面代码统计工具(更新)
2019/09/18 Python
python实现智能语音天气预报
2019/12/02 Python
PyTorch 对应点相乘、矩阵相乘实例
2019/12/27 Python
Python2与Python3的区别详解
2020/02/09 Python
python3 deque 双向队列创建与使用方法分析
2020/03/24 Python
CSS3对图片照片进行边缘模糊处理的实现
2018/08/08 HTML / CSS
详解FireFox下Canvas使用图像合成绘制SVG的Bug
2019/07/10 HTML / CSS
英国领先的杂志订阅网站:Magazine.co.uk
2018/01/25 全球购物
Stokke美国官方网店:高级儿童家具、推车、汽车座椅和配件
2020/06/06 全球购物
认购协议书范本
2014/04/22 职场文书
安全隐患整改报告
2014/11/06 职场文书
医院合作意向书范本
2015/05/08 职场文书