是否有可能让哪个组件调用一些动作 Vuex ?
我从 vuex 操作返回一个承诺,并在组件中做出一些决定,作为在各个字段上设置错误消息,但我想尽快在 component.$validator.errors 上设置我收到 http 响应(在操作方法中)
这是可能的和一个好的方法吗?
是否有可能让哪个组件调用一些动作 Vuex ?
我从 vuex 操作返回一个承诺,并在组件中做出一些决定,作为在各个字段上设置错误消息,但我想尽快在 component.$validator.errors 上设置我收到 http 响应(在操作方法中)
这是可能的和一个好的方法吗?
在 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
}
在这里,我们将组件的名称作为参数发送,因此可以在我们的动作处理程序中检查它,或者您可以直接将其传递给突变,但我认为如果您打算构建前者更可能是这种情况逻辑成这个。
至于这是否是一个好方法,答案是相当主观的,我个人认为上述方法没有任何问题。尽管我认为如果大多数组件从未被检查过,或者添加的数据最终变成无意义的绒毛,与每次调用一起传递,我认为这是一种反模式。