vue3中computed计算属性函数

本文详细介绍了Vue3中computed计算属性的基本和高级用法。在Vue3中,计算属性依然采用组合API风格,用于根据已有数据计算新数据。基本用法是创建只读的计算属性,当依赖的数据变化时,计算属性会自动更新。高级用法则展示了如何创建可读可写的计算属性,通过get和set方法实现对计算属性的读取和修改。在实际应用中,应当避免在计算属性中进行异步操作。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

写在前面

目标:现在vue3的使用越来越普遍了,vue3这方面的学习我们要赶上,今天说一下vue3中computed计算属性的使用。

computed函数在vue2中我们都了解过,当我们需要一个值,这个值随着其他值变化而变化,我们就将其放进computed中,computed是用来定义计算属性的。

1. 基本使用:只读

<template>
  <div>
    <div>计算属性</div>
    <hr>
    <button @click='age=25'>点击</button>
    <div>今年:{{age}}岁了</div>
    <div>明年:{{nextAge}}岁了</div>
  </div>
</template>

<script>
import { ref, computed } from 'vue'

export default {
  name: 'App',
  setup () {
    // 计算属性:简化模板
    // 应用场景:基于已有的数据,计算一种数据
    const age = ref(18)

    // 计算属性基本使用
    const nextAge = computed(() => {
      // 回调函数必须return,结果就是计算的结果
      // 如果计算属性依赖的数据发生变化,那么会重新计算
      return age.value + 1
    })

    return { age, nextAge }
  }
}
</script>

<style lang="less">
</style>

总结:Vue3中计算属性也是组合API风格

  1. 回调函数必须return,结果就是计算的结果
  2. 如果计算属性依赖的数据发生变化,那么会重新计算
  3. 不要在计算中中进行异步操作

2 高级用法:可读可写

<template>
  <div>
    <div>计算属性</div>
    <hr>
    <button @click='age=25'>点击</button>
    <button @click='nextAge=28'>点击修改</button>
    <div>今年:{{age}}岁了</div>
    <div>明年:{{nextAge}}岁了</div>
  </div>
</template>

<script>
import { ref, computed } from 'vue'

export default {
  name: 'App',
  setup () {
    // 计算属性:简化模板
    // 应用场景:基于已有的数据,计算一种数据
    const age = ref(18)

    // // 计算属性基本使用
    // const nextAge = computed(() => {
    //   // 回调函数必须return,结果就是计算的结果
    //   // 如果计算属性依赖的数据发生变化,那么会重新计算
    //   return age.value + 1
    // })

    // 修改计算属性的值
    const nextAge = computed({
      get () {
        // 如果读取计算属性的值,默认调用get方法
        return age.value + 1
      },
      set (v) {
        // v是计算属性下传递的实参
        // 如果要想修改计算属性的值,默认调用set方法
        age.value = v - 1
      }
    })

    return { age, nextAge }
  }
}
</script>

<style lang="less">
</style>

总结:

  1. 计算属性可以直接读取或者修改
  2. 如果要实现计算属性的修改操作,那么computed的实参应该是对象
  • 读取数据触发get方法
  • 修改数据触发set方法,set函数的形参就是你赋给他的值
Vue 3 中,`computed` 计算属性是一种用于声明依赖响应式数据的派生状态的机制。它适用于那些需要基于其他响应式数据进行复杂逻辑处理或变换的场景,其核心特点是**缓存机制**,即当依赖的数据未发生变化时,计算属性会直接返回之前的结果,而不会重复执行计算过程[^3]。 ### 基本使用方法Vue 3 中,可以使用 `setup()` 函数或组合式 API 中的 `computed` 函数来定义计算属性。以下是一个基本示例: ```javascript import { ref, computed } from &#39;vue&#39;; export default { setup() { const firstName = ref(&#39;John&#39;); const lastName = ref(&#39;Doe&#39;); const fullName = computed(() => { return `${firstName.value} ${lastName.value}`; }); return { firstName, lastName, fullName }; } }; ``` 在模板中可以直接使用 `fullName`,它会根据 `firstName` 和 `lastName` 的变化自动更新。 ### 复杂场景示例 当计算属性涉及更复杂的逻辑时,例如处理数组或对象时,`computed` 同样适用。以下是一个处理数组的示例: ```javascript import { ref, computed } from &#39;vue&#39;; export default { setup() { const numbers = ref([10, 20, 30, 40, 50]); const filteredNumbers = computed(() => { return numbers.value.filter(num => num > 25); }); return { numbers, filteredNumbers }; } }; ``` 在这个例子中,`filteredNumbers` 会根据 `numbers` 数组的值进行过滤,并且只有当 `numbers` 发生变化时才会重新计算。 ### 使用技巧与最佳实践 1. **避免副作用**:`computed` 应该保持纯净,不应包含副作用(如数据修改、异步操作等),否则可能导致难以调试的问题[^2]。 2. **利用缓存优势**:对于需要频繁访问且计算开销较大的逻辑,使用 `computed` 可以显著提升性能。 3. **合理拆分逻辑**:如果计算属性逻辑过于复杂,建议拆分成多个计算属性,以提高可维护性和可测试性[^3]。 ### 常见误区 - **与 `methods` 混淆**:`methods` 中的方法会在每次组件重新渲染时执行,而 `computed` 则会缓存结果,只有在依赖发生变化时才会重新计算。 - **过度使用**:并非所有逻辑都适合放入 `computed`,对于简单的数据变换或不需要缓存的场景,使用 `methods` 更为合适。 通过上述示例和技巧,开发者可以在 Vue 3 中充分利用 `computed` 计算属性的优势,提升应用的性能和可维护性。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值