【问题标题】:Is possible get which component call some action Vuex?是否有可能让哪个组件调用一些动作 Vuex?
【发布时间】:2018-12-27 05:40:26
【问题描述】:

是否有可能获得哪个组件调用了 Vuex 的某些操作?

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

这可能是一个好方法吗?

【问题讨论】:

  • 你不能用适当的错误解决/拒绝吗?这样发起调用的组件就可以做出决定?
  • @IdsKlijnsma 也许吧。但我认为组件不必查看 http 响应(状态、正文、标头),而只需对任何响应对象(错误或成功)采取一些操作。如果我错了,请纠正我。

标签: vue.js vuex vee-validate


【解决方案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
}

在这里,我们将组件的名称作为参数发送,因此可以在我们的动作处理程序中对其进行检查,或者您可以直接将其传递给突变,但我认为前者更有可能是您的情况计划在其中构建逻辑。

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

【讨论】:

  • 明白。如果大多数组件没有这种行为,我同意反模式,这就是我的情况。那么,您认为从 vuex 操作返回承诺并在组件中做出决策(设置错误消息)的方法是更好的方法吗?有什么建议吗?
  • 我的建议是处理涉及动作处理程序内部特定组件的所有内容,以便您可以解决承诺并分别构建每个单独的突变。
  • 除了 K.I.S.S 原则之外,不能真正提出更多建议,因为一旦您将组件内部的东西带回本地状态,您就可以简化您的商店,因此一切都更容易理解和理解。如果您没有依赖状态,也非常值得将您的整体存储分成多个单独的存储并将基于组件的操作抽象为那些。
  • 我的意思是我们可以调度上面的内容,然后在动作处理程序内部解决一个错误,然后我们在本地状态下进行调用,我们将有一个简单的方法被调用,如果err != undefined 或者你想捕获它,它将在本地处理操作的结果。
  • 不错。我会去做!我猜想更集中。谢谢你的帮助!祝你有美好的一天。
猜你喜欢
  • 2020-10-16
  • 2018-05-31
  • 1970-01-01
  • 1970-01-01
  • 2019-06-16
  • 2011-06-06
  • 2010-12-16
  • 2019-08-15
  • 2010-10-20
相关资源
最近更新 更多