vue3 的内置组件汇总

news/2024/10/21 13:13:23/

官方给出的说明:

  • Fragment: Vue 3 组件不再要求有一个唯一的根节点,清除了很多无用的占位 div
  • Teleport: 允许组件渲染在别的元素内,主要开发弹窗组件的时候特别有用
  • Suspense: 异步组件,更方便开发有异步请求的组件

一、fragment 片断组件(了解)

  • 在 Vue2 中:组件必须有一个根标签。
  • 在 Vue3 中:组件可以没有根标签,内部会将多个标签包含在一个 fragment 的虚拟元素中。

这样的好处是:减少标签层级,减小内存占用。

二、teleport 瞬移组件

Teleport 是一种能够将 “我们的组件 html 结构” 移动到指定位置的技术。

使用 teleport 组件时,需要指定 “移动位置”:

<teleport to="移动位置"></teleport>

例如:用 suspense 实现全屏弹窗

父组件A:

<template><div class="tel_a"><h3>父组件A</h3><son /></div>
</template>
<script setup>import { defineAsyncComponent } from 'vue'const Son = defineAsyncComponent(() => import('./components/son.vue'))
</script>
<style lang="less" scoped>.tel_a {width: 30%;background: #aaa;padding: 10px 30px;}
</style>

子组件B:

<template><div class="tel_b"><div>子组件B</div><button @click="modalOpen = true"> 打开全屏弹窗(teleport) </button><teleport to="body"><div v-if="modalOpen" class="modal"><div class="content">我是一个teleport弹窗<br />(我的父组件是“body”)<button @click="modalOpen = false"> 关闭 </button></div></div></teleport></div>
</template>
<script setup>import { ref } from 'vue'const modalOpen = ref(false)
</script>
<style lang="less" scoped>.flex-center () {display: flex;align-items: center;justify-content: center;}.tel_b {padding: 10px;background: rgba(242, 177, 57);}.modal {.flex-center;position: absolute;top: 0;right: 0;bottom: 0;left: 0;background-color: rgba(0, 0, 0, 0.5);.content {.flex-center;flex-direction: column;text-align: center;width: 260px;height: 160px;padding: 10px;background-color: #fff;button {display: block;margin-top: 30px;}}}
</style>

效果如下:
请添加图片描述

三、suspense 组件

suspense 组件支持:在等待异步组件加载时,渲染一些额外内容。不必非得等异步组件加载完毕再渲染,避免了因异步加载带来的白屏和闪屏问题的出现,提高了用户的体验。

suspense 的使用步骤:

  • 先异步引入组件——defineAsyncComponent
  • 然后用 suspense 包裹组件,并配置好 defaultfallback

先异步引入组件:

import { defineAsyncComponent } from 'vue'
const Child = defineAsyncComponent(()=>import('./components/Child.vue'))

然后用 Suspense 包裹组件:

<template><div class="app"><h3>我是App组件</h3><Suspense><template #default><Child/></template><template #fallback><h3>加载中.....</h3></template></Suspense></div>
</template>

http://www.ppmy.cn/news/1295689.html

相关文章

02 SQL更新语句是如何执行的

binlog 1.为什么需要binlog? binlog时Mysql的Server层的日志&#xff0c;是所有引擎都能用的。功能是数据归档也就是备份。但是不具备crash-safe的能力。 redolog 1.为什么需要redolog 每一次的更新操作都需要写进磁盘&#xff0c;然后磁盘也要找到对应的那条记录&#xff…

华为HCIA课堂笔记第四章 网络层协议与IP编址

第四章 网络层协议与IP编址 4.1 IP报文格式 版本&#xff08;version&#xff09;&#xff1a;表示该IP协议的版本号&#xff0c;取值0100即4&#xff0c;为IPV4 头部长度&#xff1a;表示IP协议头部长度&#xff08;不固定长度&#xff1a;20B固定&#xff0c;0-40B不固定…

googlecode.log4jdbc慢sql日志,格式化sql

前言 无论使用原生JDBC、mybatis还是hibernate&#xff0c;使用log4j等日志框架可以看到生成的SQL&#xff0c;但是占位符和参数总是分开打印的&#xff0c;不便于分析&#xff0c;显示如下的效果: googlecode Log4jdbc 是一个开源 SQL 日志组件&#xff0c;它使用代理模式实…

【软件测试】软件测试工程师需要掌握的非测试知识有哪些

一个优秀的测试工程师&#xff0c;必须具备宽广的知识面&#xff0c;才能设计出有的放矢的测试用例&#xff0c;保证整个软件产品的质量。除了测试专业知识外&#xff0c;你还要掌握哪些知识&#xff0c;才能一路披荆斩棘&#xff0c;成长为一名优秀的测试工程师&#xff0c;或…

Xmind思维导图-快捷键记录

Tab : 创建子主题 Enter : 创建同类目录下主题 Space : 进行文本编辑

VMware NAT 模式,网关无法ping通 网关解决办法

开启红框服务即可。。 参考&#xff1a;VMware NAT 模式&#xff0c;网关无法ping通 网关解决办法_vmware设置net,本机ping不通网关-CSDN博客

在oracle中如何删除表中数据

oracle数据库&#xff0c;mysql数据库都是drop命令>truncate命令>delete命令&#xff0c;他们的执行方式、效率和结果各有不同。下面我们就来看看吧 一、drop命令 语句drop table 表名 说明&#xff1a; 1.用drop删除表数据&#xff0c;不但会删除表中的数据&#xff0c…

【起草】【第三章】用chatGPT协助进行项目管理

#项目管理#PMO#ChatGPT 在项目管理领域&#xff0c;ChatGPT的出现为项目管理者提供了一个全新的智能引擎&#xff0c;助力项目更加高效地推进&#xff0c;成为项目管理者的得力助手。 ChatGPT与项目计划优化&#xff1a; 在制定项目计划阶段&#xff0c;ChatGPT通过与项目管理…