【问题标题】:Asignment in computed getters计算 getter 中的赋值
【发布时间】:2017-01-26 05:33:36
【问题描述】:

我只是想问一下,在计算的 getter 中分配一些属性是否合适?

props:
  invoice: 
    type: Object

computed:
  total:
    @invoice.subtotal = { some expression }

我想这样做,因为发票对象在少数其他组件上共享,并且这些组件需要来自小计组件的计算数据。

【问题讨论】:

  • 这表明invoice.subtotal 本身应该是一个计算值。

标签: vue.js vue-component


【解决方案1】:

理想情况下,您不应在计算属性内改变实例的状态。

在您的情况下,您应该查看 Vuex,它是基于 Flux architecture 的共享状态。在 Vuex 中,您可以拥有 getter 并在多个组件之间共享响应状态...

【讨论】:

  • 但 getter 仅以一种方式绑定数据(存储 > 组件)。就我而言,我需要将计算值从组件保存到存储。例如,发票商店有产品数组和小计属性,在小计组件中,我想收集所有产品,计算小计并将其保存在商店中。而且属性很多,是不是每个字段都要写mutator?
  • 是的,为了改变 Vuex 状态,你必须通过 store mutators 来改变它......你如何编写它们是你自己的决定。您可以为多个字段使用一个 mutator,这实际上取决于您想要做什么和实现什么。
  • 我有很多计算属性。有点奇怪,虽然我可以将组件逻辑拆分为子组件。但归根结底,似乎我必须定义大 vuex.store 对象。所以我看不出大 vue 组件和大 vuex.store 之间的区别。 ://
  • 你的问题很奇怪,你提到你想在组件之间共享发票数据。因为 Vuex 是最好的解决方案,当然它不是唯一的,但至少是痛苦且正确的做法。
  • 是的,但不仅仅用于模板中的输出。我想在这些组件之间拆分逻辑。例如,“小计”子项汇总发票产品的价格。然后是“增值税”孩子,从“小计”中获取数据并增加一些额外费用。 Total children 从“vat”中获取所有数据并显示在不同的模板中。通过这种方式,计算/聚合在子组件上是分开的。但是如果我必须在一个大的 vuex.store 对象中定义所有内容,那么我可以在 vue 组件上做同样的事情。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2013-08-21
  • 2014-06-17
  • 1970-01-01
  • 2022-09-27
  • 1970-01-01
  • 2015-06-01
  • 2014-03-14
相关资源
最近更新 更多