2

是否有可能让哪个组件调用一些动作 Vuex ?

我从 vuex 操作返回一个承诺,并在组件中做出一些决定,作为在各个字段上设置错误消息,但我想尽快在 component.$validator.errors 上设置我收到 http 响应(在操作方法中)

这是可能的和一个好的方法吗?

4

1 回答 1

1

在 Vuex 中,当您调用突变或操作时,您可以在调度调用的同时发送一个对象,如果您想跟踪调用操作的组件,您也可以将其作为对象的一部分发送。更好的是,如果您使用 typescript,您可以让通过 Vuex 发送的所有对象扩展一个特定的类。但请注意,找到哪个组件称为动作或突变并不是 Vuex 的本机行为。

考虑以下:

try{
    let out = await this.$store.dispatch('someActionHandler', {referingComponent: this.$options.name, someParam:[1,2,3]})
} catch (e){
   // Lets deal with the problem
}

在这里,我们将组件的名称作为参数发送,因此可以在我们的动作处理程序中检查它,或者您可以直接将其传递给突变,但我认为如果您打算构建前者更可能是这种情况逻辑成这个。

至于这是否是一个好方法,答案是相当主观的,我个人认为上述方法没有任何问题。尽管我认为如果大多数组件从未被检查过,或者添加的数据最终变成无意义的绒毛,与每次调用一起传递,我认为这是一种反模式。

于 2018-07-19T13:07:33.927 回答