对于vuex中Actions的疑惑

最近上手了vuex,其它几点都很好理解。
但是对于vuex中actions一直有不解。
竟然能在组件里用commit提交mutation,然后改变state的数据。为什么又要用actions去触发mutation,再去改变数据呢?那样不是更麻烦了吗?

想请教一下大家,actions与mutation区别,除了它可以异步操作之外。
还有什么更具体实际的好处?或者说更实际的用法?

先谢为敬!



首先谢谢大家的热心解答,所有回答的很好。

阅读 7k
7 个回答

异步还不够吸引你么(惊

Action 类似于 mutation,不同在于:

  • Action 提交的是 mutation,而不是直接变更状态。

  • Action 可以包含任意异步操作。

最后:vuex文档

action里面可以包含多个其它action并且可以执行一步操作这两个理由还不够吗?

简单来将,就是为了将异步操作与非异步操作区分开来,并且action最主要就是用来进行异步操作的,让代码逻辑更清晰

vuex2中, actions并不一定要, 但是mutation是必须要的, state的值, 只能通过mutation来编辑

你要不想把异步写到actions里, 完全可以在组件里异步, 然后this.$store.commit('xx', yy)来调用mutation

action只不过是让你多一种选择,vuex 也必须要有一个支持异步的提交方式,要不然就不灵活了。
action他是一个Promise,所以可以进行异步的链式写法, 这也就是他的好处了。

至于是在组件中等异步操作完成去commit,还是直接action去做,根据不同的业务场景有不同的选择,也有不同的好处体现出来。所以vuex只是为了更灵活使开发者多一个选择,让代码尽可能的变动优雅。

vuex中mutation和actions的使用场景分别是什么? 有大佬能解答一下吗

本质上完全可以舍弃actionsmutation里执行异步操作也并没有什么问题,官方文档里的说法存在一个错误,他说mutation里边执行不了异步操作其实是可以的。所以说从技术实现的角度来说完全可以摒弃actions
但是即使是这样依然建议你使用actions来管理代码中的异步逻辑,这样有助于解耦逻辑复杂度,让代码更易于维护,易于多人协作,让别人看你代码的时候不至于问候你全家。

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题