Skip to content
Have a clear structure

computed 计算属性

  • 定义:使用的属性不存在,要通过已有属性计算得到
  • 原理:底层使用了 Object.defineProperty() 提供的 getter 和 setter
  • getter 何时执行:
    • 初次读取时执行一次
    • 依赖的数据发生改变时执行
  • 优点:与 methods 相比,有缓存机制,效率更高
  • 若计算属性要修改,必须声明 setter 响应修改,且 setter 中要引起依赖的数据发生改变
html
<span>{{ fullName }}</span>
js
// 完整写法
computed: {
  fullName: {
    get() {
      // 计算属性依赖于已有属性得到
      return this.firstName + '-' + this.lastName
    }
    set(value) {
      // setter 中要引起依赖数据的变化
      const arr = value.split('-')
      this.firstName = arr[0]
      this.lastName = arr[1]
    }
  }
}

// 简写形式
// 只有明确计算属性不需要被修改时,才能用简写形式,即没有 setter
computed: {
  fullName() {
    return this.firstName + this.lastName
  }
}