Vue.js Vuex-这是$store.commit还是state.commit?

Vue.js Vuex-这是$store.commit还是state.commit?,vue.js,vuex,Vue.js,Vuex,我是Vue的新手。是否有正确和错误的方式来改变国家?下面两个例子都有效,所以我试图理解为什么/何时使用一个而不是另一个 import state from "../store/index"; state.commit('someMutation', data); 如果未导入状态,则其工作方式如下: this.$store.commit("someMutation", data); 改变状态不一定是一种“错误”的方式,但以文档为线索,使用or是使用fr

我是Vue的新手。是否有正确和错误的方式来改变国家?下面两个例子都有效,所以我试图理解为什么/何时使用一个而不是另一个

import state from "../store/index";

state.commit('someMutation', data);
如果未导入状态,则其工作方式如下:

this.$store.commit("someMutation", data);
改变状态不一定是一种“错误”的方式,但以文档为线索,使用or是使用from组件的方式

我总是使用动作,因为它们可以是异步的,可以在Typescript中键入,并且可以隐藏组件状态更改的任何复杂性。

更改状态不一定是“错误”的方法,但以文档为线索,使用or是使用from组件时的一种方法


我总是使用动作,因为它们可以是异步的,可以在Typescript中键入,并且可以从我的组件中隐藏状态更改的复杂性。

我认为是这样。$store.commit(“someMutation”,data);更好的做法是,无论您想在何处使用状态,都不需要导入。如果您想在安装vue之前使用存储,或者从与vue组件分离的实用程序功能(我想说,相当常见)导入状态,则必须导入。我也远离
这个。$store
几乎完全是因为我认为
mapActions
+从actions提交更干净。(基本上是诺亚·斯塔尔所说的)但我也不认为这是一件太牵挂的事情。最后,您要在此处导入存储,而不是状态。我知道这很琐碎,但命名很重要。我认为这是。$store.commit(“someMutation”,data);更好的做法是,无论您想在何处使用状态,都不需要导入。如果您想在安装vue之前使用存储,或者从与vue组件分离的实用程序功能(我想说,相当常见)导入状态,则必须导入。我也远离
这个。$store
几乎完全是因为我认为
mapActions
+从actions提交更干净。(基本上是诺亚·斯塔尔所说的)但我也不认为这是一件太牵挂的事情。最后,您要在此处导入存储,而不是状态。我知道这很琐碎,但命名很重要。