当前位置:首页 > 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 实现滑动效果 使用 CSS 过渡和动画 通过 Vue 的 transition 组件结合 CSS 过渡或动画实现滑动效果。适用于简单的元素入场/离场滑动。 <template>…

vue实现添加用户

vue实现添加用户

Vue 实现添加用户功能 数据绑定与表单设计 在 Vue 中实现添加用户功能,首先需要设计一个表单,用于收集用户输入的数据。通过 v-model 实现双向数据绑定,确保表单数据与 Vue 实例中的数据…

vue实现条件判断

vue实现条件判断

Vue 条件判断实现方法 Vue 提供了多种方式实现条件判断,可以根据不同场景选择合适的方式。 v-if / v-else-if / v-else 这是 Vue 中最常用的条件渲染指令,根据表达式的…

vue前端实现登录

vue前端实现登录

实现登录功能的基本流程 使用Vue实现登录功能需要结合前端框架和后端API交互。以下是一个典型的实现方案: 安装必要依赖 确保项目已安装axios用于HTTP请求: npm install axi…

vue 页签实现

vue 页签实现

Vue 页签实现方法 在 Vue 中实现页签功能通常涉及动态组件、路由或状态管理。以下是几种常见的实现方式: 使用动态组件 通过 Vue 的 <component> 动态组件结合 v-…

vue登录逻辑的实现

vue登录逻辑的实现

Vue 登录逻辑实现 前端实现 创建登录组件 在 Vue 项目中创建一个登录组件,通常命名为 Login.vue。该组件包含表单元素,如用户名和密码输入框,以及提交按钮。 <template…