Vue 计算属性

  • 计算属性(Computed properties)与数据属性类似,只是它们依赖于其他属性。
  • 计算属性像方法一样编写,但它们不接受任何输入参数。
  • 当依赖项发生变化时,计算属性会自动更新,而当发生某些事情时,方法会被调用,例如事件处理。
  • 当输出依赖于其他内容的内容时,会使用计算属性。

计算属性是动态的

计算属性的最大优点是它是动态的,这意味着它会根据例如一个或多个数据属性的值而变化。

计算属性是 Vue 实例中我们将学习的第三个配置选项。我们已经看到的前两个配置选项是 “数据(data)” 和 “方法(methods)”。

与 “数据(data)” 和 “方法(methods)” 一样,计算属性在 Vue 实例中也有一个保留名称:'computed'。

语法
  1. const app = Vue.createApp({
  2. data() {
  3. ...
  4. },
  5. computed: {
  6. ...
  7. },
  8. methods: {
  9. ...
  10. }
  11. })

计算属性 ‘yes’ 或 ‘no’

假设我们想要一个表单来创建购物清单中的商品,并且我们想要标记新商品是否重要。当复选框被选中时,我们可以添加 truefalse 反馈,就像我们之前在实例中所做的那样:

实例

输入元素是动态的,因此文本反映了状态。

  1. <input type="checkbox" v-model="chbxVal"> {{ chbxVal }}
  1. data() {
  2. return {
  3. chbxVal: false
  4. }
  5. }

然而,如果你问某人某件事是否重要,他们很可能会回答 ,而不是 truefalse。因此,为了使我们的表格更符合正常语言(更直观),我们应该在复选框上使用 作为反馈,而不是 truefalse

你猜怎么着,计算属性是帮助我们做到这一点的完美工具。

实例

通过计算属性 'isImportant',我们现在可以在打开和关闭复选框时自定义对用户的文本反馈。

  1. <input type="checkbox" v-model="chbxVal"> {{ isImportant }}
  1. data() {
  2. return {
  3. chbxVal: false
  4. }
  5. },
  6. computed: {
  7. isImportant() {
  8. if(this.chbxVal){
  9. return 'yes'
  10. }
  11. else {
  12. return 'no'
  13. }
  14. }

计算属性对比方法

计算属性和方法都被写成函数,但它们不同:

  • 方法在从 HTML 调用时运行,但当依赖项更改时,计算属性会自动更新。
  • 计算属性的使用方式与我们使用数据属性的方式相同,但它们是动态的。