当前位置:首页 > 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] || ''
    }
  }
}

计算属性缓存机制

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

vue computed实现

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

计算属性与方法对比

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

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

计算属性与侦听器对比

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

vue computed实现

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会将该属性记录为依赖。

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

标签: vuecomputed
分享给朋友:

相关文章

vue实现单选

vue实现单选

Vue 实现单选功能 在 Vue 中实现单选功能可以通过多种方式完成,以下是几种常见的方法: 使用 v-model 绑定单选按钮 通过 v-model 绑定一个变量,可以实现单选功能。单选按钮的 v…

vue实现atm

vue实现atm

Vue实现ATM机模拟功能 使用Vue.js实现ATM机模拟功能需要结合组件化开发、状态管理以及用户交互逻辑。以下是关键实现步骤: 核心组件结构 创建以下Vue组件构建ATM界面: Card…

vue实现多层评论回复

vue实现多层评论回复

Vue 实现多层评论回复 数据结构设计 多层评论通常采用嵌套结构,每个评论对象包含子评论数组。示例数据结构如下: comments: [ { id: 1, content: '…

vue实现页面截屏

vue实现页面截屏

使用html2canvas库实现截屏 html2canvas是一个流行的JavaScript库,可以将DOM元素转换为Canvas图像。在Vue项目中安装html2canvas: npm inst…

vue实现下载暂停

vue实现下载暂停

Vue实现下载暂停功能 在Vue中实现下载暂停功能,通常需要结合XMLHttpRequest或Fetch API的AbortController来控制请求中断。以下是具体实现方法: 使用XMLHtt…

vue实现飘窗原理

vue实现飘窗原理

vue实现飘窗原理 飘窗效果通常指在页面上悬浮显示的弹窗或通知,跟随页面滚动或固定在某个位置。Vue实现这一效果主要依赖组件化开发、CSS定位和动态数据绑定。 组件结构设计 创建一个独立的Vue组件…