当前位置:首页 > VUE

vue computed实现

2026-01-07 21:14:48VUE

计算属性的基本用法

在Vue中,计算属性通过computed选项定义,用于声明依赖于其他属性的动态值。计算属性基于它们的依赖进行缓存,只有依赖发生变化时才会重新计算。

new Vue({
  data: {
    firstName: '张',
    lastName: '三'
  },
  computed: {
    fullName() {
      return this.firstName + ' ' + this.lastName
    }
  }
})

计算属性的Setter

计算属性默认只有getter,但也可以提供setter方法。当需要修改计算属性时,setter会被调用。

computed: {
  fullName: {
    get() {
      return this.firstName + ' ' + this.lastName
    },
    set(newValue) {
      const names = newValue.split(' ')
      this.firstName = names[0]
      this.lastName = names[1] || ''
    }
  }
}

计算属性缓存机制

计算属性会基于它们的响应式依赖进行缓存。只要依赖没有变化,多次访问计算属性会立即返回缓存结果,而不会重新执行函数。

computed: {
  now() {
    return Date.now()  // 不会更新,因为不是响应式依赖
  }
}

计算属性与方法对比

方法每次调用都会执行函数,而计算属性会缓存结果。对于需要复杂计算的场景,计算属性性能更优。

methods: {
  getFullName() {
    return this.firstName + ' ' + this.lastName  // 每次调用都执行
  }
}

计算属性与侦听器对比

计算属性适合在多个数据变化时计算一个值,而侦听器适合在数据变化时执行异步或开销较大的操作。

watch: {
  firstName(val) {
    this.fullName = val + ' ' + this.lastName  // 需要手动维护
  },
  lastName(val) {
    this.fullName = this.firstName + ' ' + val
  }
}

计算属性的最佳实践

计算属性应保持纯净,不要在其中执行异步操作或修改DOM。对于需要异步操作的场景,应使用侦听器或方法。

computed: {
  filteredItems() {
    return this.items.filter(item => {
      return item.name.match(this.searchTerm)
    })
  }
}

计算属性的依赖追踪

Vue会自动追踪计算属性的依赖关系。当在计算属性中访问某个响应式属性时,Vue会将该属性记录为依赖。

vue computed实现

computed: {
  displayName() {
    return this.user.active ? this.user.name : 'Anonymous'
    // 依赖this.user.active和this.user.name
  }
}

标签: vuecomputed
分享给朋友:

相关文章

vue实现打字机

vue实现打字机

Vue实现打字机效果 在Vue中实现打字机效果可以通过动态更新文本内容并添加延迟来实现。以下是几种常见的实现方法: 使用setInterval实现 <template> <…

vue实现iframe

vue实现iframe

Vue 中实现 iframe 的方法 在 Vue 项目中,可以通过多种方式实现 iframe 的嵌入。以下是几种常见的方法: 使用原生 HTML iframe 标签 直接在 Vue 组件的模板中使用…

vue 实现挂载

vue 实现挂载

Vue 实现挂载的基本方法 在 Vue 中,挂载是将 Vue 实例与 DOM 元素关联的过程。通过挂载,Vue 可以管理 DOM 并实现数据绑定和响应式更新。 创建 Vue 实例并挂载 const…

vue 实现注册

vue 实现注册

Vue 实现注册功能 注册功能通常包括表单验证、数据提交和用户反馈。以下是实现注册功能的步骤: 1. 创建注册表单组件 在 Vue 项目中创建一个注册表单组件,包含用户名、邮箱、密码等输入字段。…

vue实现波形

vue实现波形

实现波形效果的方法 在Vue中实现波形效果可以通过多种方式完成,常见的方法包括使用Canvas绘制、CSS动画或第三方库。以下是几种实现方案: 使用Canvas绘制波形 通过Canvas API动态…

vue 实现拖拉

vue 实现拖拉

Vue 实现拖拽功能的方法 使用 HTML5 原生拖放 API HTML5 提供了原生的拖放 API,可以通过 draggable 属性、dragstart、dragend、dragover 和 dr…