Vue3.3 的 defineOptions 的使用,方便在 setup 语法糖中为组件命名和控制父子属性透传,包含在线运行实例欧

defineOptions 是 Vue3.3 的新的宏,可以通过 defineOptions 宏在 <script setup> 中使用选项式 API,也就是说可以在一个宏函数中设置 name, props, emits, render, 控制是否允许父子非 props 的属性透传等功能。

defineOptions 可以直接在 setup 语法糖 script 本中使用,自动默认导入。需要注意的是在 Vue >= 3.3 中,如果不使用 defineOptions,他是默认关闭的。

解决痛点:在 Vue3.3 之前如果使用的是<script setup> 想要设置选项式 API 的内容,需要在 vue 文件中另写一个非 setup<script >然后设置选项式 API,最后 Vue 文件在运行的时候会将两个脚本合并,但是 defineOptions 可以避免这个问题。

下面讲讲 defineOptions 的使用。文末会有 Vue 官网的演练场示例。点进去就可以查看示例,可以在线修改,折腾一下。

组件自定义名称

比如说开发中或者写组件库代码的时候可能要自定义组件名,如果使用 defineOptions 的话在直接在<script setup> 中声明组件 name 选项,而不必新增单独的 <script> 块来声明 name 选项。

vue 3.3 之前需要写两个脚本块:

<script>
import { defineComponent } from "vue";
defineComponent({name: "MyComp" //声明组件name
});
</script>
<script setup>
//setup语法糖
</script>

vue 3.3 使用 defineOptions 宏:

<script setup>
defineOptions({name: "MyComp" //声明组件name
});
</script>

阻塞透传的非 props 属性

开发中我们可能需要阻止透传非 props 属性,比如我们希望组件的属性只允许在组件内部使用,而不是在父组件中透传。vue 3.3 提供了 inheritAttrs 选项,默认为 true,表示允许透传,设置为 false 表示不允许透传。通过 defineOptions 宏,我们可以在 <script setup> 中设置 inheritAttrs 选项,来阻止透传非 props 属性。

前置知识:透传属性,简而言之呢,就是默认父组件传递给子组件的属性都会透传到子组件的根元素上,通过设置 inheritAttrs 为 false,可以阻止透传,注意:这里是阻止透传非 props 属性。关于透传属性我会再写一篇文章,包含示例,敬请期待。

<script setup>
defineOptions({inheritAttrs: false //非props的属性默认不透传
});
</script>

比如说关闭从父组件给子组件添加内嵌的 style 属性。

示例:包含组件自定义名称和阻塞透传的非 props 属性

演示地址

不想打开的话这里直接贴上源码:
父组件:

<script setup>
import Comp from "./Comp.vue";
</script><template><Comp :style="{ color: 'red' }" btnDisable>defineOptions演示</Comp>
</template>

子组件

<script setup>
defineOptions({name: "MyComp", //声明组件nameinheritAttrs: false //非props的属性默认不透传
});
defineProps({btnDisable: Boolean
});
</script><template><div><slot /><button :disabled="btnDisable">test</button></div>
</template>

实际运行效果:
在这里插入图片描述

Vue DevTools 效果:
在这里插入图片描述

更多的 defineOptions 宏选项使用示例后续会继续更新。
有收获的话可以点个赞哟。

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

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

相关文章

使用jupyter的一些常识

使用jupyter的一些常识1.help查看帮助文档用法 help(len)2.?查看帮助文档用法 len?3.??查看帮助文档 ,可以显示出源代码用法 len??4.tab代码自动补全/缩进5.shift tab查看参数及函数说明一般函数说明中*前面的内容是更重要的&#xff0c;但是不是绝对的如 np.arra…

读AI新生:破解人机共存密码笔记10人类角色

1. 工作 1.1. 技术性失业问题 1.1.1. 约翰梅纳德凯恩斯&#xff08;John Maynard Keynes&#xff09;在其著名的文章《我们后代在经济上的可能前景》中提出了技术性失业问题 1.1.1.1. 他在1930年写了这篇文章&#xff0c;当时大萧条在英国造成了大规模失业 1.1.2. 那些反对…

驾照减分考试搜题软件?分享四个可以搜答案的软件 #其他#笔记#经验分享

大学生们可以通过使用搜题软件&#xff0c;快速找到自己遇到的问题的答案&#xff0c;提高学习效率&#xff0c;以下分享各类型的供大家学习。 1.彩虹搜题 这是个微信公众号 学生或者是成年人使用非常广的一款学习应用软件&#xff0c;里面包含了各行各业的海量题库&#xf…

信息检索(53):Document Expansion by Query Prediction

Document Expansion by Query Prediction 摘要1 引言2 相关工作3 方法&#xff1a;Doc2query4 实验设置5 结果6 结论 发布时间&#xff08;2019&#xff09; 摘要 提高搜索引擎检索效率的一种方法是使用与文档内容相关或具有代表性的术语来扩展文档。从问答系统的角度来看&am…

FLASH仿真EEPROM---基于智芯Z20K11XM

一、介绍 电可擦和可编程只读存储器(EEPROM)可以对字节或字编程和擦除。EEPROM中的数据即使断电也能保持&#xff0c;但Z20K1xx芯片不含EEPROM。然而&#xff0c;闪存可以通过EEPROM仿真软件来模拟EEPROM。Z20K1xx包含两个flash阵列。编程和擦除操作可以在一个数组上进行&#…

go sync包(三) 读写锁(一)

读写锁 RWMutex 读操作是天生的幂等操作&#xff0c;因为不涉及到数据的修改&#xff0c;如果在一个读多写少的场景使用普通的互斥锁&#xff0c;每个读、写操作都要加索&#xff0c;会影响性能。 type RWMutex struct {w Mutex // held if there are pendi…

AIGC发展方向和前景

引言 背景介绍 AIGC的定义及其发展历程 AIGC&#xff0c;即人工智能生成内容&#xff0c;是近年来在人工智能领域兴起的一项重要技术。它通过使用机器学习和深度学习等技术&#xff0c;使得计算机能够自动生成各种形式的数字内容&#xff0c;如文本、图像、音频和视频等。 …

【UIDynamic-动力学-UIAttachmentBehavior-附着行为-弹性附着 Objective-C语言】

一、弹性附着啊,我们来看一下, 1.刚才我们说了刚性附着,弹性附着,怎么着做啊,实际上,只需要多添加两个属性,就可以了, 实际上,添加一个,也可以啊, 我们把这个length,先注释掉, 先注释掉,self.attach.length = 100;这句话, 固定的长度啊,给它注释掉, 然后呢…

vue3中h函数的使用

h函数是用于创建一个 vnodes &#xff0c;它既可以用于创建原生元素&#xff0c;也可以创建组件&#xff0c;其渲染后的效果等同于使用模版语言来进行创建。 h函数的传参如下&#xff1a; // 完整参数签名 function h(type: string | Component,props?: object | null,child…

Docker配置国内镜像加速-2

Docker 官方镜像仓库&#xff08;如 Docker Hub&#xff09;可能由于网络原因&#xff0c;在某些地区或网络环境下下载速度较慢。使用镜像加速可以从距离用户更近、网络条件更好的镜像服务器获取镜像&#xff0c;从而显著提高下载速度&#xff0c;节省时间。 1.测试是否安装 d…

RedHat运维-Linux文本操作基础-AWK基础

你不用整理&#xff0c;跟着敲一遍&#xff0c;有个印象&#xff0c;然后把它保存到本地&#xff0c;以后要用再去看&#xff0c;如果有了新东西&#xff0c;你自个再添加。这是我参考同行的&#xff0c;只不过换成了问答的方式而已。不用背&#xff0c;就算是我自己亲自敲&…

MongoDB可视化工具全面指南

MongoDB可视化工具概述 1.1 什么是MongoDB可视化工具 MongoDB可视化工具是指那些通过图形用户界面&#xff08;GUI&#xff09;来管理和操作MongoDB数据库的软件工具。这些工具提供了一种直观的方式来执行数据库管理任务&#xff0c;如数据查询、索引管理、性能监控和数据导入…

探索Elastic Search:强大的开源搜索引擎,详解及使用

&#x1f3ac; 鸽芷咕&#xff1a;个人主页 &#x1f525; 个人专栏: 《C干货基地》《粉丝福利》 ⛺️生活的理想&#xff0c;就是为了理想的生活! 引入 全文搜索属于最常见的需求&#xff0c;开源的 Elasticsearch &#xff08;以下简称 Elastic&#xff09;是目前全文搜索引…

三维点云目标识别对抗攻击研究综述

源自&#xff1a;电子与信息学报 作者&#xff1a;刘伟权 郑世均 郭宇 王程 注&#xff1a;若出现无法显示完全的情况&#xff0c;可 V 搜索“人工智能技术与咨询”查看完整文章 摘 要 当前&#xff0c;人工智能系统在诸多领域都取得了巨大的成功&#xff0c;其中深度学…

TensorRT-LLM加速框架的基本使用

TensorRT-LLM是英伟达发布的针对大模型的加速框架&#xff0c;TensorRT-LLM是TensorRT的延申。TensorRT-LLM的GitHub地址是 https://github.com/NVIDIA/TensorRT-LLM 这个框架在0.8版本有一个比较大的更新&#xff0c;原先的逻辑被统一了&#xff0c;所以早期的版本就不介绍了…

告别繁琐代码,迈向编程新境界—Java集合与泛型全面解析

在Java编程的征途中&#xff0c;集合&#xff08;Collection&#xff09;与泛型&#xff08;Generics&#xff09;是两大里程碑式的特性&#xff0c;它们不仅极大地提升了代码的灵活性和安全性&#xff0c;还帮助开发者简化了数据结构的处理逻辑&#xff0c;让编程之旅变得更加…

Hadoop 2.0 大家族(四)

目录 七、Flume&#xff08;一&#xff09;Flume简介&#xff08;二&#xff09;Flume入门 八、Mahout&#xff08;一&#xff09;Mahout简介&#xff08;二&#xff09;Mahout入门 七、Flume Flume是一个分布式高性能、高可靠的数据传输工具&#xff0c;它可用简单的方式将不同…

Langchain实战:构建高效的知识问答系统

引言 知识问答系统&#xff08;KQA&#xff09;是自然语言处理领域的核心技术之一&#xff0c;它能够帮助用户从大量数据中快速准确地检索到所需信息。知识问答系统成为了帮助个人和企业快速获取、筛选和处理信息的重要工具。它们在很多领域都发挥着重要作用&#xff0c;例如在…

《计算机英语》Unit 1 Computer Overview 计算机概述

期末试卷组成 1、选择20道 2、判断20道 3、词汇翻译&#xff08;单词词组&#xff0c;参照课后习题&#xff09; 4、翻译2道&#xff08;一道原题&#xff0c;参照作业&#xff09; SectionA About Computer 关于计算机 algorithm n. 算法 operate v.…

邦芒贴士:领导最反感下属这6种表现

在单位里面&#xff0c;如果在工作上出现了下面六种情况&#xff0c;就说明领导已经开始嫌弃你了&#xff0c;你的工作方式和方法一定要发生一些变化&#xff0c;及时的适应领导&#xff0c;如果再按部就班&#xff0c;那可就是真的犯傻。 1.安排事情时你总是排在第一个 安排任…