vuex dispatch和commit 的区别

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了vuex dispatch和commit 的区别相关的知识,希望对你有一定的参考价值。

参考技术A dispatch:异步操作,
commit :同步操作

为什么dispatch是异步而commit是同步呢?

首先,dispatch是去分发一个action的。而commit则是去调用mutations的,那这两个玩意儿又有啥区别呢

action: 用于调用mutations去变更state。
自身会返回一个promise,
支持异步操作

mutations:修改数据,不支持异步,只是一个单纯的函数。

为什么action支持异步而mutations不支持异步呢?

因为如果mutations支持异步的话,那数据将会变得难以跟踪。因为异步存在着很多不确定性。你不知道数据啥时候返回,不知道成功与否。所以这也注定了mutations必须是个同步操作。
但是当我们需要用到异步去获取数据提交数据的时候又该怎么办呢,action的出现就完美的解决了这些问题。所以action不能直接操作数据,他必须通过mutations去操作数据。但是他支持异步操作。所以这俩兄弟是相辅相成的。

回到上一个问题。正因为action支持异步,所以分发他的api dispatch也就是一个异步操作,而commit也就是一个同步操作了。

以上是关于vuex dispatch和commit 的区别的主要内容,如果未能解决你的问题,请参考以下文章

在Vuex使用dispatch和commit来调用mutations的区别详解

vuex里面的this.$store.dispatch 和 this.$store.commit用法以及区别

vuex中 this.$store.dispatch() 与 this.$store.commit()方法的区别

在vue2.0中用dispatch和commit来调用mutations有啥区别

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

VUEX中的dispatch()和commit()