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

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.lryc.cn/news/509569.html

相关文章:

  • Docker怎么关闭容器开机自启,批量好几个容器一起操作?
  • shell脚本(全)
  • 华为手机建议使用adb卸载的app
  • 论文解读 | EMNLP2024 一种用于大语言模型版本更新的学习率路径切换训练范式
  • Java基础(Json和Java对象)
  • Linux 中检查 Apache Web Server (httpd) 正常运行时间的 4 种方法
  • Linux驱动开发--字符设备驱动开发
  • MarkItDown的使用(将Word、Excel、PDF等转换为Markdown格式)
  • 一文彻底拿捏DevEco Studio的使用小技巧
  • R9000P键盘失灵解决办法
  • 【Linux之Shell脚本实战】编写简单计算器shell脚本
  • 【0x001D】HCI_Read_Remote_Version_Information命令详解
  • 秒鲨后端之MyBatis【2】默认的类型别名、MyBatis的增删改查、idea中设置文件的配置模板、MyBatis获取参数值的两种方式、特殊SQL的执行
  • python中使用selenium执行组合快捷键ctrl+v不生效问题
  • 大语言模型中的Agent;常见的Agent开发工具或框架
  • VSCode 性能优化指南:提高编码效率,减少资源占用
  • 深入理解C++ 容器类
  • 优化 invite_codes 表的 SQL 创建语句
  • springboot容器无法获取@Autowired对象,报null对象空指针问题的解决方式
  • 服务器数据恢复—Lustre分布式文件系统下服务器节点进水的数据恢复案例
  • 由于这些关键原因,我总是手边有一台虚拟机
  • word无法创建工作文件,检查临时环境变量。
  • 照亮技术传播之路:构建卓越的技术文档
  • 20241225在ubuntu20.04.5下监控SSD
  • Flink定时器
  • 《算力互联互通标准体系1.0》发布,为算力互联成网发展提供指导框架
  • 视频监控平台:Liveweb视频汇聚融合平台智慧安防视频监控应用方案
  • STM32串口第一次接收数据时第一个字节丢失的问题
  • Zookeeper基本命令解析
  • RustDesk远程及自建服务器搭建教程