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 相关文章推荐
Prototype源码浅析 Number部分
Jan 16 Javascript
基于JQUERY的多级联动代码
Jan 24 Javascript
CSS(js)限制页面显示的文本字符长度
Dec 27 Javascript
js图片自动切换效果处理代码
May 07 Javascript
javascript获取xml节点的最大值(实现代码)
Dec 11 Javascript
理解Angular数据双向绑定
Jan 10 Javascript
Bootstrap轮播图学习使用
Feb 10 Javascript
微信小程序 图片加载(本地,网路)实例详解
Mar 10 Javascript
JS闭包经典实例详解
Dec 20 Javascript
selenium+java中用js来完成日期的修改
Oct 31 Javascript
vue实现表格合并功能
Dec 01 Vue.js
ECharts transform数据转换和dataZoom在项目中使用
Dec 24 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
为了这两部电子管收音机,买了6套全新电子管和10粒刻度盘灯泡
2021/03/02 无线电
javascript setTimeout和setInterval 的区别
2009/12/08 Javascript
json格式化/压缩工具 Chrome插件扩展版
2010/05/25 Javascript
关于使用 jBox 对话框的提交不能弹出问题解决方法
2012/11/07 Javascript
js特效,页面下雪的小例子
2013/06/17 Javascript
js使用正则实现ReplaceAll全部替换的方法
2014/07/18 Javascript
node.js中的console.dir方法使用说明
2014/12/10 Javascript
javascript白色简洁计算器
2015/05/04 Javascript
window.onload与$(document).ready()的区别分析
2015/05/30 Javascript
用JavaScript实现对话框的教程
2015/06/04 Javascript
JS实现文档加载完成后执行代码
2015/07/09 Javascript
vue图片加载与显示默认图片实例代码
2017/03/16 Javascript
原生js中ajax访问的实例详解
2017/09/19 Javascript
如何在 Vue 表单中处理图片
2021/01/26 Vue.js
[05:15]DOTA2英雄梦之声_第16期_灰烬之灵
2014/06/21 DOTA
详解Python的Django框架中的通用视图
2015/05/04 Python
一个基于flask的web应用诞生 bootstrap框架美化(3)
2017/04/11 Python
Python3实现发送QQ邮件功能(文本)
2017/12/15 Python
Python实现备份MySQL数据库的方法示例
2018/01/11 Python
Flask框架实现给视图函数增加装饰器操作示例
2018/07/16 Python
解决pycharm导入本地py文件时,模块下方出现红色波浪线的问题
2020/06/01 Python
python中requests模拟登录的三种方式(携带cookie/session进行请求网站)
2020/11/17 Python
python使用yaml 管理selenium元素的示例
2020/12/01 Python
python中实现栈的三种方法
2020/12/19 Python
python反扒机制的5种解决方法
2021/02/06 Python
惠普墨西哥官方商店:HP墨西哥
2016/12/01 全球购物
小学教师的个人自我鉴定
2013/10/24 职场文书
网络工程专业毕业生推荐信
2013/10/28 职场文书
个人自我评价和职业目标
2014/01/24 职场文书
委托公证书范本
2014/04/03 职场文书
法定代表人授权委托书
2014/04/04 职场文书
党员干部民主生活会议批评与自我批评材料
2014/09/20 职场文书
新教师个人工作总结
2015/02/06 职场文书
2015年导购员工作总结
2015/04/25 职场文书
家庭教育教师培训学习体会
2016/01/14 职场文书
学校学习型党组织建设心得体会
2019/06/21 职场文书