vuex直接修改state 与 用dispatch/commit来修改state的差异

一. 使用vuex修改state时,有两种方式:

1.可以直接使用 this.$store.state.变量 = xxx;

2.this.$store.dispatch(actionType, payload)

或者:  this.$store.commit(commitType, payload)

使用dispatch 和 commit的区别在于,前者是异步操作,后者是同步操作,所以 一般情况下,推荐直接使用commit,
 即 this.$store.commit(commitType, payload),以防异步操作会带来的延迟问题。

二. 异同点

1.共同点: 能够修改state里的变量,并且是响应式的(能触发视图更新)

2.不同点:

若将vue创建 store 的时候传入 strict: true, 开启严格模式,那么任何修改state的操作,只要不经过

mutation的函数,vue就会  throw error :    [vuex] Do not mutate vuex store state outside mutation handlers。

三.使用commit提交到mutation修改state的优点:

vuex能够记录每一次state的变化记录,保存状态快照,实现时间漫游/回滚之类的操作。
     (实际本人未用到,暂时未遇到使用该特性的需求)

结论: 官方推荐最好设置严格模式,并且每次都要commit来修改state,而不能直接修改state,以便于调试等。

原文地址:https://www.cnblogs.com/zjx304/p/9888500.html

时间: 2024-11-10 16:45:43

vuex直接修改state 与 用dispatch/commit来修改state的差异的相关文章

git commit --amend 修改还未提交到远程分支的 commit 信息

有时候用 git commit -m 提交时,可能没写好或者误操作导致提交的信息不合适,但你还没有 push 到远程分支时, 可以使用 git commit --amend 修改上一次的提交信息. 操作示例 如下: git commit --amend 后会出现编辑界面,如下 可以在最上面红框的地方,修改要提交的信息,然后按Ctrl + o (WriteOut),如下 然后按回车保存,回到上一个界面后按 Ctrl + x 退出即可. 最后,你就可以放心的 push 到远程分支啦 ^.^

查询或修改文件的创建、访问、修改等时间戳信息

查询或修改文件的创建.访问.修改等时间戳信息.(作者写了一个命令程序以支持这些操作,程序下载链接:http://down.51cto.com/data/2286646) 这是一个命令程序,需要获取命令行参数才可以工作.命令帮助信息如下: setfiletime 文件时间戳修改命令. setfiletime [-q type] | [-s sametime] | [[-c createtime] [-aaccesstime] [-w wri tetime]] | [-h] | [-0] | [-1

怎么修改电脑MAC地址 电脑MAC地址修改图文教程

本文转载:http://www.45fan.com/a/Router/2677.html MAC地址是指电脑网卡的硬件地址,此地址一般烧录在网卡上.MAC地址工作在OSI七层模型的第二层,即数据链接层.那MAC地址可以修改吗?MAC地址一般在什么环境下需要修改? 这也是咱们今天讨论的主题,针对这两个问题,咱一个个来讨论:MAC地址可以修改吗?回答是肯定的,现在一般网卡MAC地址修改都通过软件来完成,但除了软件修改方式,本机同样可以修改.另外,MAC地址需要修改一般当在局域网绑定时才会用到,比如局

一键强制修改任意Mysql数据库的密码,修改任意环境Mysql数据库。

本文采用我软件里面的内置改密功能,可以一键强制修改Mysql数据库的密码, 在修改过程中,会强制干掉Mysql主程序,修改完成后重新启动Mysql就可以了. 首先讲解如何一键强制修改PHPWAMP自身的Mysql密码 然后再讲解如何一键强制修改其他任意环境的Mysql数据库密码. 案例采用我开发的纯绿色PHP集成环境PHPWAMP,版本号为8.1.8.8 1.案例开始,首先讲如何强制修改PHPWAMP自身Mysql数据库密码,如图 2.弹出如下界面,在红方框处直接填写你要修改的密码即可!完成!

命令行修改文件文件夹访问权限 cacls, 修改hosts内容方法

背景 日常使用Windows的过程中,hosts(C:\Windows\System32\drivers\etc)文件可能被一些程序串改,因此在网上找到禁止/允许修改hosts文件的bat脚本,但是在使用过程中有遇到了新的麻烦,特记录下相关问题的解决方法. 禁止/允许修改hosts文件的bat脚本 Hosts是一个没有扩展名的系统文件,可以用记事本等工具打开,其作用就是将一些常用的网址域名与其对应的IP地址建立一个关联"数据库",当用户在浏览器中输入一个需要登录的网址时,系统会首先自动

【springmvc+mybatis项目实战】杰信商贸-32.出口报运修改+报运货物批量展现-批量修改控件1

上一次我们完成了出口报运业务-购销合同查询与上报,但是其中有很多东西没有完善,我们接下来逐步完成我们的出口报运剩下的业务. 我们要解决其中一个问题:我们在购销合同查询界面点击"上报"之后就会直接上报至出口报运,如果用户仅仅是误点或者测试,这个有点过于草率,我们需要加一些限制来保证操作的正确性. 还有一点就是我们的主信息不全 毛重.净重.长宽高等信息我们都没有填写,我们都应该添加.我们只能在修改中去添加它. 所以我们增加修改的方法: 回顾一下我们之前的出口报运的Mapper映射文件中已经

js添加、修改、删除表格中数据、修改时在表格中直接修改

<html> <head> <script type="text/javascript"> function xianshi(){ //切换添加表单 var display=document.getElementById("add"); if(display.style.display=="block"){ display.style.display="none"; }else{ displ

文件属修改器!(创建时间、修改时间等属性修改)

还记得上学时候计算机老师让交作业,那个时候大部分人都是直接Copy别人做好的东西过来改下内容,但是没有人注意到一个问题就是老师肯定不傻,会看文件的创建时间.修改时间等属性,那时候我就找到一个修改文件属性的软件,屡试不爽,哈哈.我相信很多同学有过这样经历吧,今天再把软件整理下打包给大家,有需要的同学可以下来用.所以说Copy也要会Copy,就像写作文一样,看的多了,用的多了,只要会改,那些东西最后都是属于你自己的.不存在抄袭一说,算是借鉴和升华. 点击下载软件 文件属修改器!(创建时间.修改时间等

用jquery实现隐藏列表表单的显示关闭切换以及Ajax方式修改提交对应的那一行的修改内容。

请勿盗版,转载请加上出处http://blog.csdn.net/yanlintao1 请勿盗版,转载请加上出处http://blog.csdn.net/yanlintao1 先给大家看看图片效果,大家不要直接复制代码,这样是运行不了的,因为你们数据库和我的不一样,但是你们可以自己读读这个代码,找找对自己有用的,当然我的方法也不是最好的希望大家可以给点意见,感激不尽. (1)点击修改图标 (2)填写修改内容 (3)点击确定修改 jquery与css代码: <style type="text