当前位置:首页 > VUE

vue实现computed

2026-01-13 04:01:34VUE

在 Vue 中实现 computed

Vue 的 computed 属性用于声明基于其他响应式数据的计算属性,它会自动缓存计算结果,仅在依赖项变化时重新计算。以下是如何在 Vue 2 和 Vue 3 中实现 computed 的示例。

Vue 2 中的 computed

在 Vue 2 中,computed 通常在组件的选项中定义:

export default {
  data() {
    return {
      firstName: 'John',
      lastName: 'Doe'
    }
  },
  computed: {
    fullName() {
      return `${this.firstName} ${this.lastName}`
    }
  }
}

说明:

vue实现computed

  • fullName 是一个计算属性,依赖 firstNamelastName
  • firstNamelastName 变化时,fullName 会自动更新。
  • 计算结果会被缓存,避免重复计算。

Vue 3 中的 computed

在 Vue 3 中,可以使用 setup 函数和 computed 函数实现计算属性:

import { ref, computed } from 'vue'

export default {
  setup() {
    const firstName = ref('John')
    const lastName = ref('Doe')

    const fullName = computed(() => {
      return `${firstName.value} ${lastName.value}`
    })

    return { firstName, lastName, fullName }
  }
}

说明:

vue实现computed

  • 使用 refreactive 创建响应式数据。
  • 通过 computed 函数定义计算属性,传入一个 getter 函数。
  • 计算属性同样具有缓存特性。

计算属性的 setter

如果需要设置计算属性的值,可以提供一个 setter:

computed: {
  fullName: {
    get() {
      return `${this.firstName} ${this.lastName}`
    },
    set(newValue) {
      const [first, last] = newValue.split(' ')
      this.firstName = first
      this.lastName = last
    }
  }
}

说明:

  • get 方法用于获取计算属性的值。
  • set 方法在赋值时触发,可以更新依赖的数据。

计算属性 vs 方法

计算属性和方法的区别在于缓存:

  • 计算属性:基于依赖缓存,适合性能敏感的场景。
  • 方法:每次调用都会重新计算,适合需要动态结果的场景。
methods: {
  getFullName() {
    return `${this.firstName} ${this.lastName}`
  }
}

注意事项

  1. 避免在计算属性中执行异步操作或副作用(如修改 DOM)。
  2. 计算属性应保持纯函数特性,仅依赖响应式数据。
  3. 在 Vue 3 中,computed 返回的是一个 ref 对象,需要通过 .value 访问其值。

标签: vuecomputed
分享给朋友:

相关文章

vue实现钟表

vue实现钟表

使用 Vue 实现动态钟表 以下是一个基于 Vue 3 的动态钟表实现方案,包含时分秒指针和数字时间显示。 模板部分 <template> <div class="cloc…

vue 实现菜单

vue 实现菜单

Vue 实现菜单的方法 使用 Vue 实现菜单可以通过多种方式,以下是几种常见的方法: 使用 Vue Router 实现动态路由菜单 通过 Vue Router 可以动态生成菜单,根据路由配置自动渲…

vue实现https

vue实现https

Vue 中实现 HTTPS 的步骤 在 Vue 项目中实现 HTTPS 主要涉及开发环境配置和生产环境部署。以下是具体方法: 开发环境配置(Vue CLI 或 Vite) 使用 mkcert 生成…

vue课程实现

vue课程实现

Vue 课程实现方案 课程内容设计 Vue课程应从基础到高级逐步展开,涵盖Vue核心概念、组件化开发、状态管理、路由、构建工具等。基础部分包括Vue实例、模板语法、计算属性和侦听器。中级部分深入组件通…

vue diff实现

vue diff实现

Vue Diff 算法实现原理 Vue 的虚拟 DOM Diff 算法(即 patch 过程)是其高效渲染的核心,主要通过对比新旧虚拟节点的差异,最小化 DOM 操作。以下是关键实现要点: 同层级比…

vue实现swipe

vue实现swipe

Vue实现Swipe功能的方法 使用第三方库(推荐) Vue生态中有多个成熟的轮播/滑动组件库,例如vue-awesome-swiper或swiper/vue。以下是基于swiper/vue的实现示例…