Vue 3的Computed属性

Vue 3引入了组合式API(Composition API),为开发者提供了更加灵活和可复用的代码组织方式。在Vue 3中,Computed属性依然是处理响应式数据的重要工具,而组合式API为Computed属性的使用带来了新的变化和可能性。

一、Computed属性的基本概念

在Vue 3中,Computed属性依然是一个基于响应式依赖进行缓存的计算值。当依赖的数据发生变化时,Computed属性会自动重新计算,并更新其值。这种机制使得开发者能够以声明式的方式处理数据逻辑,同时避免不必要的重复计算。

二、组合式API中的Computed属性

在Vue 3的组合式API中,computed函数被用来创建Computed属性。这个函数接收一个getter函数,并返回一个只读的响应式ref对象。如果需要,还可以通过提供一个setter函数来创建一个可写的Computed属性。

三、代码示例

以下是一个使用Vue 3组合式API的Computed属性示例:

javascript 复制代码
<template>
  <div>
    <p>First Name: {{ firstName }}</p>
    <p>Last Name: {{ lastName }}</p>
    <p>Full Name: {{ fullName }}</p> <!-- 使用Computed属性 -->
  </div>
</template>

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

export default {
  setup() {
    // 使用ref创建响应式数据
    const firstName = ref('John');
    const lastName = ref('Doe');

    // 使用computed创建Computed属性
    const fullName = computed(() => {
      return firstName.value + ' ' + lastName.value;
    });

    // 返回响应式数据和Computed属性
    return {
      firstName,
      lastName,
      fullName
    };
  }
};
</script>

在这个例子中,fullName是一个Computed属性,它依赖于firstNamelastName这两个响应式ref对象。当firstNamelastName的值发生变化时,fullName会自动重新计算,并更新其值。

四、Computed属性的高级用法

  1. 可写的Computed属性:在Vue 3中,可以通过提供一个setter函数来创建一个可写的Computed属性。当尝试修改Computed属性的值时,会调用setter函数并更新其依赖的数据。

  2. 访问Computed属性的原始值 :在某些情况下,你可能需要访问Computed属性的原始getter函数或setter函数。在Vue 3中,可以通过computed函数返回的ref对象的.value属性来访问Computed属性的值,但通过直接访问这个属性是无法获取到getter或setter函数的。如果你需要访问它们,可以在创建Computed属性时将它们保存在额外的变量中。

五、总结

Vue 3的组合式API为Computed属性的使用带来了新的变化和可能性。通过computed函数,开发者可以轻松地创建只读或可写的Computed属性,并在组件中高效地处理响应式数据。合理使用Computed属性,可以使代码更加简洁、清晰和高效。

相关推荐
SuperEugene6 小时前
Axios 接口请求规范实战:请求参数 / 响应处理 / 异常兜底,避坑中后台 API 调用混乱|API 与异步请求规范篇
开发语言·前端·javascript·vue.js·前端框架·axios
英俊潇洒美少年8 小时前
vue如何实现react useDeferredvalue和useTransition的效果
前端·vue.js·react.js
英俊潇洒美少年9 小时前
ref 底层到底是怎么变成响应式的?
vue.js
英俊潇洒美少年9 小时前
react19和vue3的优缺点 对比
前端·javascript·vue.js·react.js
多看书少吃饭11 小时前
Vue + Java + Python 打造企业级 AI 知识库与任务分发系统(RAG架构全解析)
java·vue.js·笔记
SuperEugene12 小时前
Axios + Vue 错误处理规范:中后台项目实战,统一捕获系统 / 业务 / 接口异常|API 与异步请求规范篇
前端·javascript·vue.js·前端框架·axios
行走的陀螺仪12 小时前
手写 Vue3 极简 i18n
前端·javascript·vue.js·国际化·i18n
加个鸡腿儿12 小时前
从"包裹器"到"确认按钮"——一个组件的三次重构
前端·vue.js·设计模式
BUG胡汉三12 小时前
自建在线文档编辑服务:基于 Collabora CODE + Spring Boot + Vue 3 的完整实现
vue.js·spring boot·后端·在线编辑
终端鹿13 小时前
Vue3 核心 API 补充解析:toRef / toRefs / unref / isRef
前端·javascript·vue.js