当前位置: 首页 > article >正文

Vue 3 中可读可写的计算属性(Computed Properties)的使用场景

在 Vue 3 中,计算属性(Computed Properties)是一种基于响应式依赖进行缓存的属性。它们通常用于处理复杂的逻辑,并且只有当依赖的响应式数据发生变化时,才会重新计算。计算属性非常适合用于处理模板中的复杂表达式,使得代码更加简洁和可维护。

基本用法

在 Vue 3 中,你可以使用 computed 函数来定义计算属性。computed 函数接受一个 getter 函数,并返回一个不可变的 ref 对象。

<template>
  <div>
    <p>原始消息: {{ message }}</p>
    <p>反转后的消息: {{ reversedMessage }}</p>
  </div>
</template>

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

export default {
  setup() {
    const message = ref('Hello, Vue 3!');

    // 计算属性
    const reversedMessage = computed(() => {
      return message.value.split('').reverse().join('');
    });

    return {
      message,
      reversedMessage,
    };
  },
};
</script>

计算属性的缓存

计算属性是基于它们的响应式依赖进行缓存的。只有当依赖的响应式数据发生变化时,计算属性才会重新计算。这意味着如果依赖的数据没有变化,多次访问计算属性会立即返回之前缓存的结果,而不会重新执行计算逻辑。

可写的计算属性

默认情况下,计算属性是只读的。如果你需要创建一个可写的计算属性,你可以提供一个包含 getset 函数的对象。

<template>
  <div>
    <p>名字: {{ fullName }}</p>
    <input v-model="firstName" placeholder="First Name" />
    <input v-model="lastName" placeholder="Last Name" />
  </div>
</template>

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

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

    // 可写的计算属性
    const fullName = computed({
      get() {
        return `${firstName.value} ${lastName.value}`;
      },
      set(newValue) {
        const [first, last] = newValue.split(' ');
        firstName.value = first;
        lastName.value = last;
      },
    });

    return {
      firstName,
      lastName,
      fullName,
    };
  },
};
</script>

在这个例子中,fullName 是一个可写的计算属性。当你修改 fullName 时,firstNamelastName 也会相应地更新。

计算属性的依赖

计算属性会自动追踪它们的依赖。如果计算属性依赖于某个响应式数据,当这个数据发生变化时,计算属性会自动重新计算。

<template>
  <div>
    <p>数量: {{ quantity }}</p>
    <p>单价: {{ price }}</p>
    <p>总价: {{ totalPrice }}</p>
    <button @click="increaseQuantity">增加数量</button>
  </div>
</template>

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

export default {
  setup() {
    const quantity = ref(2);
    const price = ref(10);

    // 计算属性
    const totalPrice = computed(() => {
      return quantity.value * price.value;
    });

    const increaseQuantity = () => {
      quantity.value++;
    };

    return {
      quantity,
      price,
      totalPrice,
      increaseQuantity,
    };
  },
};
</script>

在这个例子中,totalPrice 计算属性依赖于 quantityprice。当 quantityprice 发生变化时,totalPrice 会自动重新计算。

总结

  • 计算属性是基于响应式依赖进行缓存的属性。
  • 使用 computed 函数来定义计算属性。
  • 计算属性可以是只读的,也可以是可写的。
  • 计算属性会自动追踪它们的依赖,并在依赖发生变化时重新计算。

计算属性是 Vue 3 中非常强大的工具,能够帮助你简化模板中的复杂逻辑,并提高代码的可读性和可维护性。


http://www.kler.cn/a/551155.html

相关文章:

  • go语言并发的最佳实践
  • 2025最新Java面试题大全(整理版)2000+ 面试题附答案详解
  • Python实战进阶 No1: RESTful API - 基于Flask的实例说明
  • Golang GORM系列:GORM分页和排序
  • SpringBoot分布式应用程序和数据库在物理位置分配上、路由上和数量上的最佳实践是什么?
  • Spring Boot最新技术特性深度解析与实战应用
  • SpringBoot 核心总结图
  • HarmonyNext上传用户相册图片到服务器
  • Spreadjs与GcExcel
  • 迅为RK3568开发板篇Openharmony配置HDF控制UART-什么是串口
  • Docker+DockerCompose+Harbor安装
  • DeepSeek R1本地部署 DeepSeek Api接口调用 java go版本
  • DFS算法篇:理解递归,熟悉递归,成为递归
  • 腿足机器人之二- 运动控制概览
  • SSH 登录到 Linux 服务器为什么没有要求输入密码
  • 详解Redis在Centos上的安装
  • MySQL索引和其底层数据结构介绍
  • 国产编辑器EverEdit - 如虎添翼的功能:快速选择
  • AutoGPT:突破性人工智能工具,赋能自动化写作与任务执行的未来
  • 用于可靠工业通信的5G-TSN集成原型:基于帧复制与消除可靠性的研究