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

vue3中使用computed

在 Vue 3 中,computed 是一个非常重要的响应式 API,用于声明依赖于其他响应式状态的派生状态。以下是 computed 的详细用法:

1. 基本用法

import { ref, computed } from 'vue'export default {setup() {const firstName = ref('张')const lastName = ref('三')const fullName = computed(() => {return firstName.value + ' ' + lastName.value})return {firstName,lastName,fullName}}
}

2.可写的计算属性

计算属性默认是只读的,但你可以通过提供 get 和 set 函数来创建一个可写的计算属性。

import { ref, computed } from 'vue'export default {setup() {const firstName = ref('张')const lastName = ref('三')const fullName = computed({// getterget() {return firstName.value + ' ' + lastName.value},// setterset(newValue) {[firstName.value, lastName.value] = newValue.split(' ')}})return {firstName,lastName,fullName}}
}

3.计算属性缓存

计算属性会基于它们的响应式依赖进行缓存。只有在相关响应式依赖发生改变时才会重新求值。

const now = computed(() => Date.now())
// 这个计算属性永远不会更新,因为 Date.now() 不是响应式依赖

计算属性和方法的区别:计算属性是基于它们的依赖进行缓存的,而方法总是会在重新渲染时再次执行函数。

// 方法 - 每次访问都会执行
function getFullName() {return firstName.value + ' ' + lastName.value
}// 计算属性 - 只有依赖变化时才会重新计算
const fullName = computed(() => {return firstName.value + ' ' + lastName.value
})

4.最佳实践

避免副作用:计算属性的计算函数应只做计算而不产生副作用(如异步请求或更改 DOM)

避免直接修改计算属性:除非你明确提供了 setter

简化模板:将复杂逻辑移到计算属性中,保持模板简洁

http://www.dtcms.com/a/210823.html

相关文章:

  • Python 爬虫之requests 模块的应用
  • Vue组件通信的 `$attrs`与`$listeners`的优先级
  • 高效大型语言模型推理优化综述
  • Reason-ModernColBERT论文速览:Sentence- bert-基于孪生bert网络的句子嵌入
  • 基于SpringBoot+Vue的家政服务系统源码适配H5小程序APP
  • 人脸识别流程与算法对比报告
  • ES 面试题系列「三」
  • (已开源-CVPR2024) RadarDistill---NuScenes数据集Radar检测第一名
  • Java—— IO流的应用
  • OpenLayers 加载鼠标位置控件
  • 电子人的分水岭-FPGA模电和数电
  • CMSIS-NN:2.神经网络到CMSIS-NN的转换
  • TypeScript 完全指南(三):工程化实战,搭建高效 TS 项目架构
  • keil直接生成bin文件
  • JDK21深度解密 Day 4:虚拟线程底层实现原理
  • leetcode2466,爬楼梯变体,取模注意
  • 国际前沿知识系列三:解决泛化能力不足问题
  • 29-FreeRTOS事件标志组
  • 开发者工具箱-鸿蒙AES加密解密开发笔记
  • HTTP基本概述
  • 机器学习开发全流程
  • 嵌入式培训之系统编程(四)进程
  • C++ 正则表达式简介
  • untiy实现汽车漫游
  • World of Warcraft [CLASSIC] 80 Hunter [Grandel] VS Onyxia
  • 超声波测厚仪在复杂工况下的测量精度保障方法
  • 精益数据分析(83/126):从病毒性到营收——创业阶段的关键跨越与商业化策略
  • TypeScript 和 JavaScript核心关系及区别
  • iOS 直播特殊礼物特效实现方案(Swift实现,超详细!)
  • Trae(The Real Al Engineer)