vue计算属性 实现
Vue 计算属性实现
计算属性(Computed Properties)是 Vue 中的一个核心功能,用于基于响应式依赖进行高效计算。以下是如何在 Vue 中实现计算属性的方法:
基本语法
在 Vue 组件中,可以通过 computed 选项定义计算属性。计算属性会根据依赖的响应式数据自动缓存结果,只有当依赖发生变化时才会重新计算。
export default {
data() {
return {
firstName: 'John',
lastName: 'Doe'
}
},
computed: {
fullName() {
return `${this.firstName} ${this.lastName}`
}
}
}
计算属性 vs 方法
计算属性与方法不同,计算属性是基于它们的依赖进行缓存的。只有在依赖发生变化时才会重新求值,而方法在每次调用时都会执行。
methods: {
getFullName() {
return `${this.firstName} ${this.lastName}`
}
}
计算属性的 Setter
计算属性默认只有 getter,但也可以提供 setter 以实现双向绑定。
computed: {
fullName: {
get() {
return `${this.firstName} ${this.lastName}`
},
set(newValue) {
const names = newValue.split(' ')
this.firstName = names[0]
this.lastName = names[1] || ''
}
}
}
计算属性的依赖
计算属性会自动追踪响应式依赖。如果依赖的数据是响应式的(如 data 中的属性或其他计算属性),计算属性会在依赖变化时自动更新。
computed: {
reversedMessage() {
return this.message.split('').reverse().join('')
}
}
计算属性的缓存
计算属性的结果会被缓存,除非依赖的响应式属性发生变化。这使得计算属性在多次访问时效率更高。
computed: {
now() {
return Date.now() // 不会更新,因为 Date.now() 不是响应式依赖
}
}
计算属性的使用场景
- 需要对数据进行复杂计算时
- 需要缓存计算结果以提高性能时
- 需要基于多个响应式数据派生新数据时
通过以上方法,可以高效地在 Vue 中实现和使用计算属性。







