当前位置:首页 > 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 项目中实现目录功能,可以通过以下几种方式实现,具体取决于需求和技术栈。 使用 Vue Router 实现路由目录 Vue Router 是 Vue.js 的官方…

vue实现无线滚动列表

vue实现无线滚动列表

无限滚动列表的实现方法 在Vue中实现无限滚动列表通常结合监听滚动事件和动态加载数据。以下是几种常见方法: 使用自定义指令 创建自定义指令v-infinite-scroll监听滚动事件:…

vue实现飘窗原理

vue实现飘窗原理

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

vue 动画 实现

vue 动画 实现

vue 动画实现方法 Vue 提供了多种方式实现动画效果,主要包括过渡动画和动态动画两类。 使用 <transition> 组件实现基础过渡 通过 Vue 内置的 <transit…

vue实现滑块

vue实现滑块

Vue 实现滑块组件的方法 使用原生 HTML 和 Vue 指令 通过 Vue 的 v-model 和事件监听实现基础滑块功能。创建一个包含 input 元素的组件,类型设置为 range,并绑定到…

vue实现类别

vue实现类别

Vue 实现类别的几种方法 在 Vue 中实现类别功能可以通过多种方式完成,以下是一些常见的方法: 使用 v-bind:class 动态绑定类名 通过对象语法或数组语法动态绑定类名,根据条件添加或移…