当前位置:首页 > VUE

vue中computed如何实现

2026-02-20 19:45:25VUE

computed 的基本用法

在 Vue 中,computed 是一个计算属性,用于基于响应式依赖进行复杂逻辑的计算。计算属性会缓存结果,只有依赖的响应式数据发生变化时才会重新计算。

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

computed 的 getter 和 setter

计算属性默认只有 getter,但也可以提供 setter 用于在需要时修改依赖的值。

vue中computed如何实现

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

computed 与 methods 的区别

计算属性是基于它们的响应式依赖进行缓存的,只有在依赖发生变化时才会重新计算。而 methods 每次调用都会执行函数。

export default {
  data() {
    return {
      message: 'Hello'
    }
  },
  computed: {
    reversedMessage() {
      return this.message.split('').reverse().join('')
    }
  },
  methods: {
    reverseMessage() {
      return this.message.split('').reverse().join('')
    }
  }
}

computed 的依赖追踪

计算属性会自动追踪响应式依赖,当依赖发生变化时,计算属性会重新计算。

vue中computed如何实现

export default {
  data() {
    return {
      user: {
        name: '张三',
        age: 25
      }
    }
  },
  computed: {
    userInfo() {
      return `姓名:${this.user.name},年龄:${this.user.age}`
    }
  }
}

computed 在 Vue 3 中的使用

Vue 3 中可以通过 computed 函数来创建计算属性。

import { ref, computed } from 'vue'

export default {
  setup() {
    const firstName = ref('张')
    const lastName = ref('三')

    const fullName = computed(() => {
      return firstName.value + ' ' + lastName.value
    })

    return {
      firstName,
      lastName,
      fullName
    }
  }
}

computed 的性能优化

由于计算属性会缓存结果,适合用于性能开销较大的计算。避免在模板中使用复杂表达式,改用计算属性可以提高性能。

export default {
  data() {
    return {
      list: [1, 2, 3, 4, 5]
    }
  },
  computed: {
    filteredList() {
      return this.list.filter(item => item > 2)
    }
  }
}

标签: 如何实现vue
分享给朋友:

相关文章

vue.js实现轮播

vue.js实现轮播

vue.js实现轮播的方法 使用第三方库(如Swiper) 安装Swiper库: npm install swiper 在Vue组件中引入Swiper: <template>…

vue实现画圆弧并着色

vue实现画圆弧并着色

在 Vue 中实现画圆弧并着色 使用 Canvas API 绘制圆弧 在 Vue 组件的 mounted 钩子中,通过 Canvas API 绘制圆弧。创建一个 canvas 元素并获取其上下文:…

vue实现发表

vue实现发表

Vue 实现发表功能 在 Vue 中实现发表功能通常涉及表单处理、数据绑定和网络请求。以下是实现步骤和代码示例: 表单设计与数据绑定 创建一个表单用于输入发表内容,使用 v-model 进行数据双向…

vue优秀实现

vue优秀实现

Vue.js 优秀实现方法 响应式数据管理 使用 Vue 的 ref 和 reactive 处理基础类型和对象类型数据,结合 computed 计算属性优化渲染性能。对于复杂状态,推荐 Pinia 替…

vue实现picker

vue实现picker

Vue 实现 Picker 组件的方法 在 Vue 中实现 Picker 组件可以通过多种方式完成,以下是几种常见的实现方法: 使用原生 HTML 和 CSS 实现 通过 Vue 的模板和样式绑定,…

vue实现树

vue实现树

Vue 实现树形结构的方法 使用递归组件实现树形结构 递归组件是Vue中实现树形结构的常见方式。通过组件调用自身,可以轻松构建多层嵌套的树形数据。 <template> <ul…