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 学习技巧总结
May 21 Javascript
Jquery 数据选择插件Pickerbox使用介绍
Aug 24 Javascript
replace()方法查找字符使用示例
Oct 28 Javascript
js类定义函数时用prototype与不用的区别示例介绍
Jun 10 Javascript
js由下向上不断上升冒气泡效果实例
May 07 Javascript
浅谈利用JavaScript进行的DDoS攻击原理与防御
Jun 04 Javascript
JavaScript中最容易混淆的作用域、提升、闭包知识详解(推荐)
Sep 05 Javascript
JavaScript与JQUERY获取元素的宽、高和位置
Feb 26 Javascript
Vue 开发音乐播放器之歌手页右侧快速入口功能
Aug 08 Javascript
vue开发拖拽进度条滑动组件
Sep 21 Javascript
简单了解常用的JavaScript 库
Jul 16 Javascript
浅谈JavaScript 声明提升
Sep 14 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采用ajax数据提交post与post常见方法总结
2014/11/10 PHP
php用ini_get获取php.ini里变量值的方法
2015/03/04 PHP
PHP导出Excel实例讲解
2016/01/24 PHP
PHP简单处理表单输入的特殊字符的方法
2016/02/03 PHP
PHP实现网站应用微信登录功能详解
2019/04/11 PHP
PHP 对象接口简单实现方法示例
2020/04/13 PHP
JavaScript学习笔记之获取当前目录的实现代码
2010/12/14 Javascript
jquery.validate的使用说明介绍
2013/11/12 Javascript
JS求平均值的小例子
2013/11/29 Javascript
javascript检查浏览器是否支持flash的实现代码
2014/08/14 Javascript
Jquery遍历Json数据的方法
2015/04/20 Javascript
浅谈javascript获取元素transform参数
2015/07/24 Javascript
JavaScript实现iframe自动高度调整和不同主域名跨域
2016/02/27 Javascript
详解如何较好的使用js
2016/12/16 Javascript
微信小程序 弹框和模态框实现代码
2017/03/10 Javascript
Angular数据绑定机制原理
2018/04/17 Javascript
vuejs点击class变化的实例
2018/09/05 Javascript
微信小程序监听用户登录事件的实现方法
2019/11/11 Javascript
js 获取本周、上周、本月、上月、本季度、上季度的开始结束日期
2020/02/01 Javascript
vue实现的封装全局filter并统一管理操作示例
2020/02/02 Javascript
[01:16]DOTA2小知识课堂 Ep.03 芒果树无伤肉山
2019/12/05 DOTA
unittest+coverage单元测试代码覆盖操作实例详解
2018/04/04 Python
python里dict变成list实例方法
2019/06/26 Python
Django文件存储 默认存储系统解析
2019/08/02 Python
使用django和vue进行数据交互的方法步骤
2019/11/11 Python
keras实现调用自己训练的模型,并去掉全连接层
2020/06/09 Python
canvas实现烟花的示例代码
2020/01/16 HTML / CSS
单身旅行者的单身假期:Just You
2018/04/08 全球购物
如何用Python来进行查询和替换一个文本字符串
2014/01/02 面试题
优秀交警事迹材料
2014/01/26 职场文书
骨干教师考核方案
2014/05/09 职场文书
影视广告专业求职信
2014/09/02 职场文书
毕业生班级鉴定评语
2015/01/04 职场文书
英文自荐信范文
2015/03/25 职场文书
SQL Server中交叉联接的用法详解
2021/04/22 SQL Server
游戏《我的世界》澄清Xbox版暂无计划加入光追
2022/04/03 其他游戏