何时在计算属性设置器上使用方法,反之亦然?

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 模式,反之亦然?

vuejs 计算属性 - 何时触发更新?

如何在 gnu arm eclipse 或 cdt 上的项目资源管理器上设置或替换文件?

何时向托管对象添加类别以及何时使用瞬态属性?

在对象检查器上显示 TFrame 后代的附加属性