首页 > 其他分享 >vuex actions 和 mutations 分析,为什么官方建议 actions 里面不要直接修改 state, 为了开发工具服务器,直接修改代码也能工作,但是devtools工具丢失了他的作

vuex actions 和 mutations 分析,为什么官方建议 actions 里面不要直接修改 state, 为了开发工具服务器,直接修改代码也能工作,但是devtools工具丢失了他的作

时间:2023-06-16 12:55:24浏览次数:45  
标签:mutations actions 修改 state mutation action vuex

来自官方大大:区分 actions 和 mutations 并不是为了解决竞态问题,而是为了能用 devtools 追踪状态变化。
事实上在 vuex 里面 actions 只是一个架构性的概念,并不是必须的,说到底只是一个函数,你在里面想干嘛都可以,只要最后触发 mutation 就行。
异步竞态怎么处理那是用户自己的事情。vuex 真正限制你的只有 mutation 必须是同步的这一点(在 redux 里面就好像 reducer 必须同步返回下一个状态一样)。
同步的意义在于这样每一个 mutation 执行完成后都可以对应到一个新的状态(和 reducer 一样),这样 devtools 就可以打个 snapshot 存下来,
然后就可以随便 time-travel 了。如果你开着 devtool 调用一个异步的 action,你可以清楚地看到它所调用的 mutation 是何时被记录下来的,
并且可以立刻查看它们对应的状态。其实我有个点子一直没时间做,那就是把记录下来的 mutations 做成类似 rx-marble 那样的时间线图,
对于理解应用的异步状态变化很有帮助。

 

 

如果你强行在生产环境中用action修改state,Vuex也不会阻止你,它可能仅仅是给你一个警告;而且按道理来说,如果我们能够保证同一类型的action只有一个声明,那么无论是使用action还是mutation来修改state结果都是一样的,因为Vuex针对这种情况,没有使用Promise.all执行action,所以也就不会存在返回结果先后问题

 

https://juejin.cn/post/6844904054108192776

标签:mutations,actions,修改,state,mutation,action,vuex
From: https://www.cnblogs.com/porter/p/17485286.html

相关文章

  • GitHub Actions by Example
    GitHubActionsbyExampleGitHubActionsisaconvenientCI/CDserviceprovidedbyGitHub.GitHubActionsbyExample isanintroductiontotheservicethroughannotatedexamples.HelloWorldEventTriggersActionsEnvironmentVariablesParallelJobsJob......
  • Windows批量修改或去除文件前缀脚本
    chcp65001@echooffsetlocalEnableDelayedExpansionset/pfolderPath="请输入需要修改前缀的文件夹路径:"set/poldPrefix="请输入原前缀:"set/pnewPrefix="请输入新前缀:"for%%iin("%folderPath%\%oldPrefix%*")do(set"filen......
  • 博客园自定义样式修改标签页的icon图标
    步骤1:选择一张自己喜欢的图片,上传到https://www.logosc.cn/logo/favicon这个网站,将它转换成ico格式步骤2:进入博客园→文件界面,1.上传ico格式文件,2.点击这个文件步骤3:复制这一段url步骤4:进入博客园设置界面,将这段代码放入页眉<scripttype="text/javascript"language="jav......
  • JDBC-修改
     /**修改*1.sql语句*updatetb_brandsetbrand_name=?,company_name=?,ordered=?,description=?,status=?whereid=?*2.参数:需要所有参数信息*3.结果:boolean......
  • [转]git rebase -i修改多个commiit
    原文:https://zhuanlan.zhihu.com/p/340007149 有的时候我们会突然发现某个地方需要修改,最常见的某个不应该被提交的文件被提交了进来。我们希望它不只是在后序的版本当中不再出现,而是希望整个从git仓库当中移除掉。这个时候我们就需要修改git之前的历史记录。这个时候应该怎......
  • url欺诈--HTML5无刷修改url
     window.history.pushState({},0,'http://'+window.location.host+'/'+url); url--要修改的网址a标签欺诈<script>window.onclick=function(){       //触发单击事件,修改链接  document.links[0].setAttribute('href','http://google.com');}&......
  • 隐患排查记录批量修改排查人.
    ///<summary>///隐患排查记录批量修改排查人.///</summary>///<returns></returns>[HttpGet("Yhpc")][AllowAnonymous][IgnoreLog]publicasyncTask<dynamic>Yhpc(){......
  • SAP查找用户的登录记录及修改记录
    1、可以使用USR02中有个上次登陆日期和登陆时间。  2、用SE38跑下RSUSR200,输入用户名即可查询上次登陆日期 3、SU10可以查到 4、USH02可以查找用户的修改记录  ......
  • 修改域管理员密码
    问题:在实际使用中,有时候为了安全性考虑需要周期性的更改管理员的密码。如果我们在AD域中直接修改域管理员的密码,修改完成之后会发现所有用户都没有办法登录。打开CRM登录页面之后,输入账号和密码之后浏览器闪了一下,然后又重新进入到登录页面,让你重新输入账号和密码。原因是ADFS......
  • 关于xfs文件系统uuid的修改方法
    场景1:系统中有两个文件系统的uuid是一样(UUID 是通用唯一识别码(UniversallyUniqueIdentifier)的缩写)场景2:因一些特殊的原因,需要将文件系统的uuid修改成特定的uuid 当然场景1,其实也可以通过笔者另一篇文章中讲到的使用 mount-onouuid/dev/nvme1n1/nvme1n1的方式解......