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

vue3入门教程:计算属性

计算属性的基本用法

计算属性是通过computed函数创建的,它接受一个getter函数作为参数,并返回一个只读的响应式ref对象。该ref对象通过.value属性暴露getter函数的返回值。

<template>
  <div>
    <p>原始数据: {{ count }}</p>
    <p>计算属性: {{ doubleCount }}</p>
    <button @click="increment">增加</button>
  </div>
</template>

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

export default {
  setup() {
    const count = ref(0);
    const doubleCount = computed(() => count.value * 2);

    const increment = () => {
      count.value++;
    };

    return {
      count,
      doubleCount,
      increment,
    };
  },
};
</script>

在这个例子中,doubleCount是一个计算属性,它依赖于count变量。当count的值改变时,doubleCount的值会自动重新计算。

可写的计算属性

虽然计算属性默认是只读的,但你可以通过提供一个对象给computed函数,该对象包含getset方法来创建一个可写的计算属性。

<template>
  <div>
    <p>姓名: {{ fullName }}</p>
    <button @click="changeName">修改姓名</button>
  </div>
</template>

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

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

    const fullName = computed({
      get() {
        return firstName.value + ' ' + lastName.value;
      },
      set(value) {
        const nameArr = value.split(' ');
        firstName.value = nameArr[0];
        lastName.value = nameArr[1];
      },
    });

    const changeName = () => {
      fullName.value = '李 四';
    };

    return {
      fullName,
      changeName,
    };
  },
};
</script>

在这个例子中,fullName是一个可写的计算属性。当你修改fullName的值时,set方法会被调用,并更新firstNamelastName的值。

计算属性的调试

在开发环境中,你可以向computed函数传入第二个参数,该参数是一个对象,包含onTrackonTrigger两个函数。这两个函数分别用于追踪计算属性的依赖和触发计算属性的重新计算。

<template>
  <div>
    <p>计数: {{ count }}</p>
    <p>双倍计数: {{ doubleCount }}</p>
    <button @click="increment">增加</button>
  </div>
</template>

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

export default {
  setup() {
    const count = ref(0);
    const doubleCount = computed(() => count.value * 2, {
      onTrack(e) {
        console.log('计算属性追踪依赖:', e);
      },
      onTrigger(e) {
        console.log('计算属性触发更新:', e);
      },
    });

    const increment = () => {
      count.value++;
    };

    return {
      count,
      doubleCount,
      increment,
    };
  },
};
</script>

在这个例子中,当count的值变化时,onTrackonTrigger函数会被调用,并输出相关的调试信息。

计算属性的最佳实践

  1. 避免在getter中执行异步操作或修改其他状态:计算属性的getter函数应该只根据依赖项计算值,不应该有其他副作用。
  2. 谨慎使用可写的计算属性:虽然Vue3允许创建可写的计算属性,但在大多数情况下,你应该优先考虑使用普通的数据属性。
  3. 利用计算属性的缓存机制:计算属性只有在依赖项发生变化时才会重新计算,这可以显著提高性能。

通过掌握Vue3组合式API中的计算属性,你可以更高效地管理和处理组件中的派生数据。


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

相关文章:

  • No.1免费开源ERP:Odoo自定义字段添加到配置页中的技术分享
  • CSS系列(36)-- Containment详解
  • 004-spring-注解aop的使用
  • 互联网视频云平台EasyDSS无人机推流直播技术如何助力野生动植物保护工作?
  • linux创建虚拟串口
  • eth_type_trans 函数
  • CentOS7 安装MySQL
  • STM32 -- USB虚拟串口通信
  • Kubernetes ConfigMap的创建与使用
  • 深入探讨 Rust 与 C 的对比及其在内存安全和跨语言调用中的应用
  • 每天五分钟机器学习:核函数
  • AJAX与Axios
  • 第四节、电机定角度转动【51单片机-L298N-步进电机教程】
  • leetcode hot100 LRU缓存
  • docker 安装雷池WAF防火墙 守护Web服务器
  • 软件工程课程知识点
  • 解决需要用到1.x版本的tensorflow环境的问题
  • 【递归与回溯深度解析:经典题解精讲(上篇)】—— LeetCode
  • 每天40分玩转Django:Django表单集
  • 在 Mac M2 上安装 PyTorch 并启用 MPS 加速的详细教程与性能对比
  • 使用Python探索量子机器学习
  • ByConity BSP 解锁数据仓库新未来
  • Android DRM 技术详解与应用实践
  • HarmonyOS NEXT 实战之元服务:静态案例效果--- 手机一键加速、手机垃圾清理
  • 中阳智能:量化交易助力科技与金融融合
  • 基于LSTM长短期记忆神经网络的多分类预测【MATLAB】