Vue3.5正式上线,有哪些新特性和用法?

news2025/1/11 17:02:16

在这里插入图片描述
9月1日, Vue 3.5 正式发布了!

此次要版本不包含重大更改,并且包括内部改进和有用的新功能。我们将在这篇博文中介绍一些亮点 - 有关更改和新功能的完整列表,请参阅 GitHub 上的完整更新日志。

1. Props 解构

在vue3.5 之前,如果将props直接进行解构,是会失去响应式的,解构出来的值实际上是一个常量。如果需要监听变化,则需要配合toRefs一起使用。

之前的props声明方式:

const props = withDefaults(
  defineProps<{
    count?: number
    msg?: string
  }>(),
  {
    count: 0,
    msg: 'hello'
  }
)

vue3.5现在可以简化声明:解构的同时还会保持其响应式。

const { count = 0, msg = 'hello' } = defineProps<{
  count?: number
  message?: string
}>()

在 3.5 及以上版本中,当同一个 <script setup> 块中的代码访问从 defineProps 解构的变量时(例如 count),Vue 的编译器会自动的访问编译为 props.count

使用watch监听解构后的props时,如果按以下这样写,是将一个值而不是响应式数据源传递给 watch。事实上,Vue 的编译器会捕获这种情况并抛出警告。

const { foo } = defineProps(['foo'])

watch(foo, /* ... */)

监听解构后props的正确写法

watch(() => foo, /* ... */)

2. 元素ref的定义

在 3.5 之前,我们可以使用变量名称与 静态ref 属性匹配的普通 refs。旧方法要求 ref 属性可由编译器分析,因此仅限于静态 ref 属性。

<script setup>
const inputRef = ref('input')
</script>

<template>
  <input ref="input">
</template>

相比之下,useTemplateRef() 通过运行时字符串匹配 refs,因此支持动态 ref 的使用场景。

<script setup>
import { useTemplateRef } from 'vue'

const inputRef = useTemplateRef('input')
</script>

<template>
  <input ref="input">
</template>

3. Teleport 支持延迟

当使用 Teleport 组件时,指定的目标元素(即 to 属性所指向的选择器对应的元素)必须在页面的 DOM(文档对象模型)结构中已经存在,否则 Teleport 就无法将内容传送过去。

比如,如果你使用 <teleport to="#my-target">,但页面中没有一个具有 id=“my-target” 的元素,Teleport 就无法正常工作,因为找不到传送内容的目标位置。

但vue3.5中可以通过defer来延迟Teleport 的挂载,它会等到同一更新周期中的所有其他 DOM 内容都渲染完毕后,再定位目标容器并挂载其子容器。

<Teleport defer to="#target">...</Teleport>
<div id="target"></div>

下面这样写就会找不到目标元素,因为在组件渲染的顺序上,<Teleport> 组件会先尝试查找目标位置,而此时 <div id="target"></div> 还没有被渲染出来。

<Teleport to="#target">...</Teleport>
<div id="target"></div>

4. watch清理回调

有时我们可能会在 watcher 中执行副作用,例如异步请求

watch(id, (newId) => {
  fetch(`/api/${newId}`).then(() => {
    //  回调事件
  })
})

但是,如果 id 在请求完成之前发生更改,该怎么办?当上一个请求完成时,它仍将触发 ID 值已过时的回调。理想情况下,我们希望能够在 id 更改为新值时取消过时的请求。

我们可以使用onWatcherCleanup() 来注册一个清理函数,该函数将在观察程序失效并即将重新运行时调用:

import { watch, onWatcherCleanup } from 'vue'

watch(id, (newId) => {
  const controller = new AbortController()

  fetch(`/api/${newId}`, { signal: controller.signal }).then(() => {
    // 回调事件
  })
  
  onWatcherCleanup(() => {
    // 如果 id 在请求完成之前发生更改,会取消之前的请求
    controller.abort()
  })
})

注意:onWatcherCleanup 仅在 Vue 3.5+ 中受支持,并且必须在同步执行 watchEffect 函数或 watch 回调函数期间调用:不能在异步函数中的 await 语句之后调用它。

vue3.5之前中也可以使用onCleanup 函数作为第 3 个参数传递给watch函数:

watch(id, (newId, oldId, onCleanup) => {
  // ...
  onCleanup(() => {
    // 清除逻辑
  })
})

watchEffect((onCleanup) => {
  // ...
  onCleanup(() => {
    // 清除逻辑
  })
})

还有一些SSR 和自定义元素相关的改进,文中没有提到,有关 3.5 中更改和功能的完整列表,请查看 GitHub 上的完整更改日志

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/2124958.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

C语言14--作用域与存储期

作用域基本概念 C语言中&#xff0c;标识符都有一定的可见范围&#xff0c;这些可见范围保证了标识符只能在一个有限的区域内使用&#xff0c;这个可见范围&#xff0c;被称为作用域&#xff08;scope&#xff09;。 软件开发中&#xff0c;尽量缩小标识符的作用域是一项基本原…

细致刨析JDBC ③ 高级篇

目录 一、JDBC优化及工具类封装 1.现有问题 2.JDBC工具类封装V1.0 3.ThreadLocal 4.JDBC工具类封装V2.0 二、DAO封装及BaseDAO工具类 1.BaseDAO概念 2.BaseDao层代码实现 ① BaseDao层——通用的修改方法 ② 通用的查询方法 ③ 单行查询方法优化 三、事务 1、事务回顾 2.JDBC中…

批量操作Excel的四个方法(求和、移动、对比、合并)

Excel文件肯定少不了保存大量数据&#xff0c;那么在使用excel的时候会不会要大批量数据进行操作&#xff1f;今天分享4个快速使用excel操作的小技巧。希望能够帮大家提高excel制作效率。 技巧一&#xff1a;快速求和 当你想要分别得到行列的总和&#xff0c;我们可以选中表格…

WeChatFerry学习使用

准备 下载软件安装微信 安装python环境 conda create --prefixD:\PythonEnvs\wechatrobotstu python3.10 conda activate D:\PythonEnvs\wechatrobotstu使用 新建python项目 安装依赖包 pip install --upgrade wcferry -i https://pypi.doubanio.com/simple解压dll到一个…

安卓开发板_联发科MTK开发板使用ADB开发

1. ADB 使用 1.1. 前言 ADB&#xff0c;全称 Android Debug Bridge&#xff0c;是 Android 的命令行调试工具&#xff0c;可以完成多种功能&#xff0c;如跟踪系统日志&#xff0c;上传下载文件&#xff0c;安装应用等。 1.2. 准备连接 使用 adb时&#xff0c;你需要&#x…

转到大模型方向来得及吗?

最近不少同学问想搞大模型来得及吗&#xff1f;咨询的同学分成两类&#xff0c;一类是在公司的同学&#xff0c;一类是在校的同学。 第一&#xff0c;对于在校的同学。 一句话&#xff0c;能转到这个方向尽快转。今年校招包括招聘实习生&#xff0c;很多方向比如搜索推荐广告…

敏捷与企业架构:战略联盟

介绍 企业架构的三大支柱是对齐、洞察力和质量。 对齐&#xff1a;企业架构&#xff08;Enterprise Architecture&#xff09;使战略与运营、业务需求与IT供应保持一致&#xff0c;并确保这些变化符合企业战略和目标。 洞察力&#xff1a;企业架构提供对组织、信息系统和技术…

基于JavaWeb开发的Java+jquery+SpringMVC校园网站平台设计和实现

基于JavaWeb开发的JavajquerySpringMVC校园网站平台设计和实现 &#x1f345; 作者主页 网顺技术团队 &#x1f345; 欢迎点赞 &#x1f44d; 收藏 ⭐留言 &#x1f4dd; &#x1f345; 文末获取源码联系方式 &#x1f4dd; &#x1f345; 查看下方微信号获取联系方式 承接各种…

shutil模块详解

shutil模块提供了一系列高级文件操作功能&#xff0c;包括复制、移动、删除和搜索文件或目录。shutil 模块对压缩包的处理是调用 ZipFile 和 TarFile这两个模块来进行的。 下面详细介绍并给出示例代码&#xff1a; 1. shutil.copy(src, dst) 复制文件&#xff0c;但不保留权限…

【程序员必读】如何用AI修复代码Bug,让你节省宝贵的调试时间!

在编程的旅程中&#xff0c;bug就像是我们前行路上的小石子&#xff0c;时不时地绊倒我们。无论你是刚入门的编程新手&#xff0c;还是经验丰富的开发者&#xff0c;调试代码时总会遇到各种各样的挑战。&#x1f629; 有时候&#xff0c;错误的信息可能模糊不清&#xff0c;令…

SAP PP模块后台配置全流程配置2

1.1.定义工艺路线 定义物料类型分配T-Code:OP50 为物料类型指定工艺路线类型 为物料类型HALF2、FERT2分配类型“路径N” 定义工艺路线CA01 1.1.2.1.定义HAL2类型:物料2000000000工艺路线 输入“物料编码”、“工厂”等信息 工艺路线:抬头信…

国家标准和行业标准有什么区别?如何办理国家标准?

在当今复杂多样的标准体系中&#xff0c;国家标准和行业标准犹如两颗璀璨的明珠&#xff0c;各自闪耀着独特的光芒&#xff0c;它们共同为经济社会的发展提供了坚实的技术支撑。然而&#xff0c;你是否真正了解这两者之间的区别呢&#xff1f; 一、制定主体 • 国家标准&#x…

0基础?没问题!吴恩达教授的《开发者的LLM入门完全指南》来了!

项目&#xff1a;面向开发者的 LLM 入门课程 这份完整版的大模型 AI 学习资料已经上传CSDN&#xff0c;朋友们如果需要可以微信扫描下方CSDN官方认证二维码免费领取【保证100%免费】 ## 项目简介 本项目是一个面向开发者的 LLM 入门教程&#xff0c;基于吴恩达老师大模型系列课…

问题:vite首次加载慢

概述&#xff1a; 不是说vite项目的启动很快很快吗&#xff1f; vite项目的启动确实是快&#xff08;注意这里的启动是指命令行启动完毕&#xff0c;不是指启动完之后首页加载完毕&#xff09; 如果某个界面是首次进入&#xff0c;且依赖比较多/比较复杂的话&#xff0c;那…

温习mysql函数 连接查询

字符串 1、CONCAT(S1,S2,...Sn) &#xff1a;字符串拼接&#xff0c;将S1 &#xff0c; S2 &#xff0c; ... Sn 拼接成一个字符串】 2、LOWER(str) &#xff1a;将字符串str全部转为小写 3、UPPER(str) &#xff1a;将字符串str全部转为大写 4、LPAD(str,n,pad)&#xff1a; …

基于SpringBoot+Vue+MySQL的教学资源共享平台

系统展示 用户前台界面 管理员后台界面 系统背景 随着信息技术的迅猛发展&#xff0c;教育领域对高效、便捷的教学资源需求日益增长。传统教学模式已难以满足当前教育的多样化需求&#xff0c;特别是在资源共享与利用方面存在明显不足。因此&#xff0c;构建一个基于SpringBoot…

关于大模型在产品开发中所面临的问题,利用大模型技术解决很简单!

“ 具体问题具体分析&#xff0c;大模型技术没有统一的解决方案 ” 有人说2024年是大模型应用的元年&#xff0c;而大模型在未来的发展潜力毋庸置疑&#xff0c;这也就意味着人工智能技术是下一个风口&#xff0c;因此各种各样基于大模型技术的创业公司如雨后春笋般涌现。 从…

Linux云计算 |【第二阶段】SHELL-DAY5

主要内容&#xff1a; awk命令、内置变量&#xff08;FS、$0、$1、$2、NF、NR&#xff09;、过滤时机&#xff08;BEGIN{}、{}、END{}&#xff09;、处理条件&#xff08;正则、&&、||、~\!~、等&#xff09;、awk数组、监控脚本、安全检测脚本 一、awk介绍 awk 是一…

【主机入侵检测】Wazuh解码器详解

前言 Wazuh 是一个开源的安全平台&#xff0c;它使用解码器&#xff08;decoders&#xff09;来从接收到的日志消息中提取信息。解码器将日志信息分割成字段&#xff0c;以便进行分析。Wazuh解码器使用XML语法&#xff0c;允许用户指定日志数据应该如何被解析和规范化。解码器的…

TP发邮件的功能如何实现?tp框架发送邮件?

tp发邮件系统如何设置发信&#xff1f;tp配置邮箱发送邮件方法&#xff1f; TP发邮件的功能&#xff0c;作为企业级应用中的一个关键模块&#xff0c;其稳定性和高效性直接影响到企业的日常运营。AokSend将深入探讨TP发邮件的功能如何实现&#xff0c;从基础配置到高级应用&am…