最近上手了vuex,其它几点都很好理解。
但是对于vuex中actions一直有不解。
竟然能在组件里用commit提交mutation,然后改变state的数据。为什么又要用actions去触发mutation,再去改变数据呢?那样不是更麻烦了吗?
想请教一下大家,actions与mutation区别,除了它可以异步操作之外。
还有什么更具体实际的好处?或者说更实际的用法?
最近上手了vuex,其它几点都很好理解。
但是对于vuex中actions一直有不解。
竟然能在组件里用commit提交mutation,然后改变state的数据。为什么又要用actions去触发mutation,再去改变数据呢?那样不是更麻烦了吗?
想请教一下大家,actions与mutation区别,除了它可以异步操作之外。
还有什么更具体实际的好处?或者说更实际的用法?
在vuex2
中, actions
并不一定要, 但是mutation
是必须要的, state
的值, 只能通过mutation
来编辑
你要不想把异步写到actions
里, 完全可以在组件里异步, 然后this.$store.commit('xx', yy)
来调用mutation
action
只不过是让你多一种选择,vuex 也必须要有一个支持异步的提交方式,要不然就不灵活了。
action他是一个Promise,所以可以进行异步的链式写法, 这也就是他的好处了。
至于是在组件中等异步操作完成去commit,还是直接action去做,根据不同的业务场景有不同的选择,也有不同的好处体现出来。所以vuex只是为了更灵活使开发者多一个选择,让代码尽可能的变动优雅。
本质上完全可以舍弃actions
在mutation
里执行异步操作也并没有什么问题,官方文档里的说法存在一个错误,他说mutation
里边执行不了异步操作其实是可以的。所以说从技术实现的角度来说完全可以摒弃actions
。
但是即使是这样依然建议你使用actions
来管理代码中的异步逻辑,这样有助于解耦逻辑复杂度,让代码更易于维护,易于多人协作,让别人看你代码的时候不至于问候你全家。
10 回答11.1k 阅读
6 回答3k 阅读
5 回答4.8k 阅读✓ 已解决
4 回答3.1k 阅读✓ 已解决
2 回答2.6k 阅读✓ 已解决
2 回答4.7k 阅读✓ 已解决
4 回答4.3k 阅读✓ 已解决
异步还不够吸引你么(惊
最后:vuex文档