Vue3.5+ 响应式 Props 解构
你好同学,我是沐爸,欢迎点赞、收藏、评论和关注。
在 Vue 3.5+ 中,响应式 Props 解构已经稳定并默认启用。这意味着在 <script setup> 中从 defineProps 调用解构的变量现在是响应式的。这一改进大大简化了声明带有默认值的 props 的方式,并使得在子组件中直接使用解构后的 props 变量时能够保持响应性。
最新语法
Vue 的响应系统基于属性访问跟踪状态的使用情况。例如,在计算属性或侦听器中访问 props.foo 时,foo 属性将被跟踪为依赖项。
因此,在以下代码的情况下:
const { foo } = defineProps(["foo"]);
watchEffect(() => {// 在 3.5之前只运行一次// 在 3.5+ 中在 "foo" prop 变化时重新执行console.log(foo);
});
在 3.5 之前的版本中, foo是一个实际的常量,永远不会改变。在 3.5 及以上版本,当在同一个 <script setup> 代码块中访问由 defineProps 解构的变量时,Vue 编译器会自动在前面添加 props.。因此,上面的代码等同于以下代码:
const props = defineProps(["foo"]);
watchEffect(() => {// `foo` 由编译器转换为`props.foo`console.log(props.foo);
});
此外,你可以使用 JavaScript 原生的默认值语法声明 props 默认值。这在使用基于类型的 props 声明时特别有用。
const { foo = 'hello' } = defineProps<{ foo?: string }>()
watch 监听解构的 props
const { foo } = defineProps(["foo"]);watch(foo, /_ ... _/);
这并不会按预期工作,因为它等价于 watch(props.foo, ...)——我们给 watch 传递的是一个值而不是响应式数据源。实际上,Vue 的编译器会捕捉这种情况并发出警告。
与使用 watch(() => props.foo, ...) 来侦听普通 prop 类似,我们也可以通过将其包装在 getter 中来侦听解构的 prop:
watch(() => foo/* ... */
);
此外,当我们需要传递解构的 prop 到外部函数中并保持响应性时,这是推荐做法:
useComposable(() => foo);
外部函数可以调用 getter (或使用 toValue 进行规范化) 来追踪提供的 prop 变更。例如,在计算属性或侦听器的 getter 中。
示例一 watchEffect
3.5+ 版本<template><div>{{ content }}</div>
</template><script setup>import { defineProps, watchEffect } from "vue";// 解构 props,注意这里的变量是响应式的const { content } = defineProps(["content"]);watchEffect(() => {// 在 3.5 之前只运行一次// 在 3.5+ 中在 "content" prop 变化时重新执行console.log(content);});
</script>
3.5 前的版本
<template><div>{{ content }}</div>
</template><script setup>import { defineProps, watchEffect } from "vue";const props = defineProps(["content"]);watchEffect(() => {console.log(props.content);});
</script>
示例二 watch
3.5+ 版本<template><div>{{ content }}</div>
</template><script setup>import { defineProps, watch } from 'vue'const { content } = defineProps(['content'])watch(() => content,(newValue) => {console.log(newValue))
</script>
3.5 前的版本
<template><div>{{ content }}</div>
</template><script setup>import { defineProps, watch } from 'vue'const props = defineProps(['content'])watch(() => props.content,(newValue) => {console.log(newValue))
</script>
示例三 computed
3.5+ 版本<template><div>{{ content }}<br />{{ formatContent }}</div>
</template><script setup>import { defineProps, computed } from "vue";const { content } = defineProps(["content"]);const formatContent = computed(() => content.toUpperCase());
</script>
3.5 前的版本
<template><div>{{ content }}<br />{{ formatContent }}</div>
</template><script setup>import { defineProps, computed } from "vue";const props = defineProps(["content"]);const formatStr = computed(() => props.content.toUpperCase());
</script>
好了,分享结束,谢谢点赞,下期再见。
相关文章:
Vue3.5+ 响应式 Props 解构
你好同学,我是沐爸,欢迎点赞、收藏、评论和关注。 在 Vue 3.5 中,响应式 Props 解构已经稳定并默认启用。这意味着在 <script setup> 中从 defineProps 调用解构的变量现在是响应式的。这一改进大大简化了声明带有默认值的 props 的方…...
k8s中的认证授权
目录 一、kubernetes API 访问控制 1.1 UserAccount与ServiceAccount 1.1.1 ServiceAccount 1.1.2 ServiceAccount示例 二、认证(在k8s中建立认证用户) 2.1 创建UserAccount 2.2 RBAC(Role Based Access Control) 2.2.1 基于角色访问控制授权&…...
Leetcode 3291. Minimum Number of Valid Strings to Form Target I
Leetcode 3291. Minimum Number of Valid Strings to Form Target I 1. 解题思路2. 代码实现 题目链接:3291. Minimum Number of Valid Strings to Form Target I 1. 解题思路 这一题第一反应就是用一个字典树动态规划的方式,倒是也搞定了,…...
PostgreSQL的查看主从同步状态
PostgreSQL的查看主从同步状态 PostgreSQL 提供了一些系统视图和函数,查看和监控主从同步的状态。 1 在主节点上查看同步状态 pg_stat_replication 视图 在主节点上,可以通过查询 pg_stat_replication 视图来查看复制的详细状态信息,包括…...
Java多态性的理解
方法的覆盖 子类的方法重写了父类的方法,相当于对原来的方法进行了增强,接口就是这样的思想。 属性的隔离(Java中什么情况下都不会属性覆盖,python可能会覆盖) public class Main {public static void main(String[…...
安全工具 | 使用Burp Suite的10个小tips
Burp Suite 应用程序中有用功能的集合 img Burp Suite 是一款出色的分析工具,用于测试 Web 应用程序和系统的安全漏洞。它有很多很棒的功能可以在渗透测试中使用。您使用它的次数越多,您就越发现它的便利功能。 本文内容是我在测试期间学到并经常的主要…...
企业项目中字符串工具类
此工具类暂时包含如下功能: isEmpty()判断字符串是否为空subSpecifiedString()判断字符串是否超出指定长度,超出则截取到指定长度yearMonthToDate()将年月的字符串转成年月日格式 yearMonthToDateTime()将年月的字符串转成年月日时分秒格式 package co…...
下载github patch到本地
以下是几种从 GitHub 上下载以.patch 结尾的补丁文件的方法: 通过浏览器直接下载 打开包含该.patch 文件的 GitHub 仓库。在仓库的文件列表中找到对应的.patch 文件。点击该文件,浏览器会显示文件的内容,在页面的右上角通常会有一个“Raw”…...
C++基础部分代码
C OOP面对对象 this指针 C:各种各样的函数定义 struct C:类》实体的抽象类型 实体(属性,行为)-》ADT(abstract data type) OOP语言的四大特征是什么? 抽象 封装/隐藏 继承 多态 访问限定符:public公有的 private私有的…...
neo4j(spring) 使用示例
文章目录 前言一、neo4j是什么二、开始编码1. yml 配置2. crud 测试3. node relation 与java中对象的关系4. 编码测试 总结 前言 图数据库先驱者 neo4j:neo4j官网地址 可以选择桌面版安装等多种方式,我这里采用的是docker安装 直接执行docker安装命令: docker run…...
链接升级:Element UI <el-link> 的应用
链接升级:Element UI 的应用 一 . 创建文字链接1.1 注册路由1.2 创建文字链接 二 . 文字链接的属性2.1 文字链接的颜色2.2 是否显示下划线2.3 是否禁用状态2.4 填写跳转地址2.5 加入图标 在本篇文章中,我们将深入探索Element UI中的<el-link>组件—…...
简单题26 - 删除有序数组中的重复项(Java)20240917
问题描述: java代码: class Solution {public int removeDuplicates(int[] nums) {if (nums.length 0) return 0; // 处理空数组情况int i 0; // 指向新数组中的最后一个不重复元素for (int j 1; j < nums.length; j) {if (nums[j] ! nums[i]) { …...
DFS:深搜+回溯+剪枝实战解决OJ问题
✨✨✨学习的道路很枯燥,希望我们能并肩走下来! 文章目录 目录 文章目录 前言 一 排列、子集问题 1.1 全排列I 1.2 子集I 1.3 找出所有子集的异或总和 1.4 全排列II 1.5 字母大小写全排列 1.6 优美的排列 二 组合问题 2.1 电话号码的数字组合 …...
命令语境中的“可以”的字词含义分析
摘要 在语言交流中,词汇的使用经常受到语境的影响。本文探讨了“可以”一词在上司与下属之间的互动中所表达的命令含义。通过分析语料和实例,发现“可以”在某些情况下并不传达许可的含义,而是被用作一种隐性命令。本文讨论了这一现象的成因…...
直播相关03-录制麦克风声音, ffmpeg 命名,使用命令行完成录音
一 ffmpeg 命令 ffmpeg arg1 arg2 -i arg3 arg4 arg5ffmpeg 全局参数 输入文件参数 -i 输入文件 输出文件参数 输出文件arg1:全局参数 arg2:输入文件参数 arg3:输入文件 arg4:输出文件参数 arg5:输出文件 二 ffprobe …...
VUE3中ref与reactive
ref:支持所有类型reactive:只支持引用类型(Obj,Array...)两者都是实现数据视图响应式 JS逻辑使用中 ref:需要使用.value reactive:不需要使用.value <el-button click"handle()" type"primary"…...
高职院校人工智能技术和无人机技术实训室建设方案
一、方案背景与需求分析 1.1 人工智能与无人机技术发展概况 人工智能(AI)和无人机技术作为当今科技领域的两大热点,正以前所未有的速度发展和渗透到各行各业中。根据国际数据公司(IDC)的报告,全球人工智能市场规模预计将在2024年…...
x-cmd pkg | shtris: 在终端体验经典的俄罗斯方块游戏
目录 简介首次用户技术特点竞品和相关项目进一步阅读 简介 shtris 是一个由 shell 脚本,参考 俄罗斯方块指南 (2009) 实现的俄罗斯方块游戏。 首次用户 本文的 demo 展现了如何通过 x-cmd 快速启动使用 shtris 。x-cmd也提供了1分钟教程可以帮你快速入门。 技术…...
Linux基础---07文件传输及解决yum安装失效的方法
Linux文件传输地图如下,先选取你所需的场景,若你是需要Linux和Linux之间传输文件就查看SCP工具即可。 一.下载网站文件 前提是有网: 检查网络是否畅通命令:ping www.baidu.com,若有持续的返回值就说明网络畅通。Ctr…...
[项目][WebServer][Makefile Shell]详细讲解
目录 1.Makefile2. build.sh3.test.sh 1.Makefile 为了方便构建项目,并将其发布,使用Makefile来管理构建项目 bin httpserver cgi test_cgi cc g GLD_FLAGS -stdc11 -D DEBUG_SHOW LD_FLAGS $(GLD_FLAGS) -lpthread src main.cc curr $(shell p…...
Phi-4-mini-reasoning保姆级教程:14GB显存跑通128K长上下文推理
Phi-4-mini-reasoning保姆级教程:14GB显存跑通128K长上下文推理 1. 模型介绍 Phi-4-mini-reasoning是微软推出的3.8B参数轻量级开源模型,专为数学推理、逻辑推导和多步解题等强逻辑任务设计。这个模型主打"小参数、强推理、长上下文、低延迟"…...
普通程序员有必要深入学习JVM底层原理吗?
对于JVM,我想大部分小伙伴都是要面试了才会去学,其余时间基本不会去看。但值得一说的是,当你工作多年之后,你遇到的项目会越来越复杂,遇到的问题也会越来越复杂:各种古怪的内存溢出,死锁&#x…...
解锁Unity游戏插件开发:从概念到实战的MelonLoader全攻略
解锁Unity游戏插件开发:从概念到实战的MelonLoader全攻略 【免费下载链接】MelonLoader The Worlds First Universal Mod Loader for Unity Games compatible with both Il2Cpp and Mono 项目地址: https://gitcode.com/gh_mirrors/me/MelonLoader 一、认知篇…...
高并发场景下的B2B对公支付方案:聚合支付、错付拦截与自动化对账
在B2B交易场景中,大额对公支付一直是一个绕不开的技术难题。与C端支付不同,B2B交易涉及百万级甚至千万级资金流转,传统的线下转账模式不仅流程繁琐,还带来了财务对账耗时、错付退款难、客户付款流失率高等一系列问题。本文将从技术…...
卫生经济学中模型搭建与分析的奇妙之旅
马尔可夫模型,马科夫模型,Markov Model搭建,决策树模型 卫生经济学,药物经济学评价,成本效果分析,成本效益分析,成本效用分析,CEA,health economics,pharmaco…...
Translumo完全指南:5分钟掌握实时屏幕翻译,打破语言障碍
Translumo完全指南:5分钟掌握实时屏幕翻译,打破语言障碍 【免费下载链接】Translumo Advanced real-time screen translator for games, hardcoded subtitles in videos, static text and etc. 项目地址: https://gitcode.com/gh_mirrors/tr/Translumo…...
数学解题能力实测:通义千问QwQ-32B vs Claude 3.5 Sonnet,谁才是理科生最佳AI助手?
数学解题能力实测:通义千问QwQ-32B vs Claude 3.5 Sonnet,谁才是理科生最佳AI助手? 当一道复杂的AIME竞赛题摆在面前时,你会选择哪种AI助手?是擅长分步推导的开源新秀QwQ-32B,还是以逻辑严谨著称的Claude 3…...
快速原型:用快马一键生成win11右键菜单传统样式恢复工具
快速原型:用快马一键生成win11右键菜单传统样式恢复工具 最近升级到Windows 11后,最让我不习惯的就是那个右键菜单了。新版的设计把所有选项都折叠起来,每次想找个功能还得点"显示更多选项",效率大打折扣。作为一个习惯…...
保姆级图解:ARM CHI协议里的Credit机制,到底是怎么防止芯片“堵车”的?
ARM CHI协议中的Credit机制:芯片互连的智能交通控制系统 想象一下早高峰时段的城市交通——如果没有红绿灯和匝道流量控制,整个道路系统将在几分钟内陷入瘫痪。类似地,在现代多核处理器和芯片间互连架构中,Credit机制正是扮演着这…...
树莓派与STM32串口通信实战:从配置到调试全流程解析
1. 硬件准备与环境搭建 第一次尝试用树莓派和STM32做串口通信时,我对着桌上堆满的零件发愁:到底哪些线该接哪里?后来发现其实核心部件就三样:树莓派(推荐4B型号)、STM32开发板(我用的是F103C8T6…...
