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

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 中非常强大的工具,能够帮助你简化模板中的复杂逻辑,并提高代码的可读性和可维护性。

相关文章:

  • 快速搭建 OLLAMA + DeepSeek 模型并对接 Cherry Studio
  • 什么叫数据库中的水平和垂直拓展?什么叫库拆分?
  • 安全问答—安全的基本架构
  • 【096】基于51单片机红外线人数统计系统【Proteus仿真+Keil程序+报告+原理图】
  • 论文概览 |《Sustainable Cities and Society》2023.12 Vol.99(上)
  • SD3 的采样上篇——Flow Matching
  • SQL注入(SQL Injection)详解与实战
  • HarmonyNext上传用户相册图片到服务器
  • STM32F1学习——SPI通信
  • VIE(可变利益实体)架构通俗解析 —— 以阿里巴巴为例(中英双语)
  • C++ | 虚函数
  • C#插件实现单据审核不通过报错提示
  • JG类软件测试报告编写注意事项
  • Elasticsearch 数据建模:从原理到实战的降维打击指南
  • 【git】工作场景下的 工作区 <-> 暂存区<-> 本地仓库 命令实战 具体案例
  • 什么是RDD以及它在Spark中的作用
  • 百度百舸 DeepSeek 一体机发布,支持昆仑芯 P800 单机 8 卡满血版开箱即用
  • Cocos Creator资源自动释放之2.x和3.x版本的使用及区别
  • 数值分析与科学计算导引——误差与算法举例
  • 深入解析Qt事件循环
  • 中国域名网站/手机创建网站免费注册
  • 邢台做网站咨询/怎样制作网页新手自学入门
  • 发布网站需要备案吗/兰州网络推广与营销
  • 公众号取名神器/电商seo是指
  • 网站建设对网络营销的影响/360关键词排名百度
  • 做网站需要解析吗/百度在线客服