何时在计算属性设置器上使用方法,反之亦然?
Posted
技术标签:
【中文标题】何时在计算属性设置器上使用方法,反之亦然?【英文标题】:When to use method over computed property setter and vice versa? 【发布时间】:2018-05-19 06:18:57 【问题描述】:在使用 Vue.js 时,什么时候应该使用方法或计算属性设置器? documentation 或众多文章中似乎没有什么区别。通常文章将计算属性设置器仅作为一个脚注。
鉴于方法和设置器都接受参数,您是否有特别的原因会使用其中一个?据我所知,方法就是你所需要的。
编辑:
这实际上不是转发,因为链接的 SO 答案包含一次 setter 一词,并且仅在模糊的传递中:
计算的属性被转换成 Vue 的属性,带有一个 getter,有时是一个 setter。
太好了,那么这如何详细说明这篇文章的主题,何时使用 SETTER 与方法?
【问题讨论】:
对计算属性和方法有疑问吗?因为这已经被报道过好几次了 他们都没有讨论我的头衔。 好的,我会重新打开它。我认为您的困惑源于对 setter 实际上是什么的误解,它只是属性的 part 。 setter 不接受参数,它接受单个值。您不会“调用”您设置的计算属性;this.myComputed = "some value"
,它反过来通过定义的 setter 传递值。大多数关于属性与方法的任何其他语言(在几个 SO 讨论中的 c#)的讨论也适用。在 Vue 中,当我想在 v-model
表达式中使用计算属性时,我通常只使用 setter。
【参考方案1】:
计算的属性被缓存,因此它们可以在性能方面为您带来好处。它们不像方法那样工作,因为它们不接受参数。
我主要使用它们来修改现有数据或使其更容易访问嵌套数据。
关于缓存的部分最终可能会很麻烦。除非它们的直接依赖关系发生变化,否则它们将始终缓存。控制块内的计算属性中的属性通常不会更新计算属性(不被视为直接依赖项)。
这是你需要注意的事情。
当使用大型 v-for
列表之类的东西时,您将希望利用计算属性的缓存能力,因为与使用方法不同,您不必一遍又一遍地执行其中的逻辑,除非直接计算属性变化的依赖关系。
【讨论】:
【参考方案2】:应使用计算属性来显示与现有数据相关的数据。虽然方法应该用于执行操作和/或更改数据。
【讨论】:
以上是关于何时在计算属性设置器上使用方法,反之亦然?的主要内容,如果未能解决你的问题,请参考以下文章
何时在 LinkedList 或 ArrayList 上使用 HashMap,反之亦然
何时在 C++ 中的嵌套类上使用 Pimpl 模式,反之亦然?