首页 > 其他分享 >vue3知识点:Teleport组件

vue3知识点:Teleport组件

时间:2024-10-30 10:44:12浏览次数:1  
标签:知识点 vue Teleport App Son vue3 组件 import

@

目录

五、新的组件

2.Teleport

问题:什么是Teleport?

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

<teleport to="移动位置">
	<div v-if="isShow" class="mask">
		<div class="dialog">
			<h3>我是一个弹窗</h3>
			<button @click="isShow = false">关闭弹窗</button>
		</div>
	</div>
</teleport>

注意点1:

问题:使用传送的好处?

答案:不影响其他组件html的结构,举例说明我son组件有个div,我有个显示按钮,有个隐藏按钮,如果不使用Teleport,那么每次展示div时候会影响别的组件html结构,而使用Teleport就不会影响,具体效果看案例结果一目了然。

注意点2:
好处是方便定位,直接把html结构直接传送走,比如案例的传送至body处或者其他处。

案例

完整代码

项目结构

main.js

//引入的不再是Vue构造函数了,引入的是一个名为createApp的工厂函数
import { createApp } from 'vue'
import App from './App.vue'

//创建应用实例对象——app(类似于之前Vue2中的vm,但app比vm更“轻”)
const app = createApp(App)

//挂载
app.mount('#app')

App.vue

<template>
	<div class="app">
		<h3>我是App组件</h3>
		<Child/>
	</div>
</template>

<script>
	import Child from './components/Child'
	export default {
		name:'App',
		components:{Child},
	}
</script>

<style>
	.app{
		background-color: gray;
		padding: 10px;
	}
</style>

Child.vue

<template>
	<div class="child">
		<h3>我是Child组件</h3>
		<Son/>
	</div>
</template>

<script>
	import Son from './Son'
	export default {
		name:'Child',
		components:{Son},
	}
</script>

<style>
	.child{
		background-color: skyblue;
		padding: 10px;
	}
</style>

Son.vue

<template>
	<div class="son">
		<h3>我是Son组件</h3>
		<Dialog/>
	</div>
</template>

<script>
	import Dialog from './Dialog.vue'
	export default {
		name:'Son',
		components:{Dialog}
	}
</script>

<style>
	.son{
		background-color: orange;
		padding: 10px;
	}
</style>

Dialog.vue

<template>
	<div>
		<button @click="isShow = true">点我弹个窗</button>
		<teleport to="body">
			<div v-if="isShow" class="mask">
				<div class="dialog">
					<h3>我是一个弹窗</h3>
					<h4>一些内容</h4>
					<h4>一些内容</h4>
					<h4>一些内容</h4>
					<button @click="isShow = false">关闭弹窗</button>
				</div>
			</div>
		</teleport>
	</div>
</template>

<script>
	import {ref} from 'vue'
	export default {
		name:'Dialog',
		setup(){
			let isShow = ref(false)
			return {isShow}
		}
	}
</script>

<style>
	.mask{
		position: absolute;
		top: 0;bottom: 0;left: 0;right: 0;
		background-color: rgba(0, 0, 0, 0.5);
	}
	.dialog{
		position: absolute;
		top: 50%;
		left: 50%;
		transform: translate(-50%,-50%);
		text-align: center;
		width: 300px;
		height: 300px;
		background-color: green;
	}
</style>

结果展示:

使用Teleport-案例结果.gif

未使用Teleport-案例结果.gif

本人其他相关文章链接

1.《vue3第五章》新的组件,包含:Fragment、Teleport、Suspense
2.vue3知识点:Teleport组件
3.vue3知识点:Suspense组件

标签:知识点,vue,Teleport,App,Son,vue3,组件,import
From: https://www.cnblogs.com/bigcat26/p/18515365

相关文章

  • VUE3+signalR实现单点登录
    摘要:在MES项目中,不能多人同时操作,方便任务分配追责,使用signalR实现单点登录1、在项目中安装依赖npmi@microsoft/signalr2、使用:在登录成功的时候与服务器建立连接//登录和服务器建立连接、实现单点登录conststartConnection=async(res:any)=>{try{......
  • HTTP知识点
    常见题目:1.HTTP常见的状态码1xx服务器收到请求,但还没返回数据。(不常用)2xx请求成功,如2003xx重定向,如3024xx客户端错误,如4045xx服务端错误,如500-常见状态码:200成功301永久重定向(配合location,浏览器自动处理),location是新的地址,浏览器会记住这个地址,浏览器永远......
  • ElasticSearch知识点小记
    ElasticSearch索引的基本操作#创建索引PUT/index_name可以初始不定义{ "settings":{ //索引设置 "number_of_shards":"1",//索引的分片书决定了索引的并行度和数据分布不可以动态修改 "number_of_replicas":"1",//副本的数量提高了数据的可用性和容错能力可以动态......
  • Groovy语言知识点简要介绍
    语法规则##注释**单行**注释使用//在该行的任==何位==置来识别。**多行**注释标识与在开始/*和*/识别多行注释的末尾。##分号像Java编程语言,它需要具有**分号**在Groovy定义多个语句之间进行区分。##关键字###除java之外的特殊数字类型定义,如:BigInteg......
  • C#01-C#知识点
    @目录0.什么是C#?1.什么是类?2.面向对象编程的主要概念是什么?3.什么是对象?4.什么是构造函数,它有哪些不同的类型?5.C#中的析构函数是什么?6.C#代码是托管代码还是非托管代码?7.什么是值类型和引用类型?8.什么是命名空间,它是强制性的吗?9.用例子解释C#中的注释类型10.请解释封装11.什......
  • C++ 网络编程 IO多路复用、select、poll、epoll知识点总结
    1.什么是I/O多路复用?I/O多路复用(I/OMultiplexing)是一种编程技术,允许一个线程或进程同时管理多个I/O通道(如文件描述符、套接字等)。它使得单个进程能够在不使用多个线程或进程的情况下,同时处理多个I/O操作。这在网络编程和高性能服务器中尤为重要,因为它可以有效地利用系......
  • 三维变换矩阵知识点
    一、行矩阵与列矩阵、行主序与列主序行主序和列主序影响如何在内存中访问和存储矩阵数据,与行矩阵和列矩阵的概念没有直接的关系行矩阵与列矩阵:行矩阵:        $$\begin{pmatrix}a_{11}&a_{12}\\a_{21}&a_{22}\end{pmatrix}$$列矩阵:指的是矩阵的元......
  • python知识点100篇系列(23)- 使用stylecloud生成词云
    使用stylecloud生成词云stylecloud是wordcloud优化版,相对来说操作更简单;一个很方便的功能是,可以使用FontAwesome提供的免费图标更改词云的形状;FontAwesome提供的免费图标库参考这里安装所需库主要是安装一下分词用到的jieba和生成词云使用的stylecloud安装方式......
  • Vue3 - 完美解决html2canvas截图不全问题,截图只截取当前可视区域导出图片不全,截屏导出
    前言该解决方案任意前端技术栈通用,不仅限Vue。在vue3(手机H5移动端/微信公众号H5页面)项目开发中,使用html2canvas截屏时发现有一部分未截取到少了一块截图不完整,导出保存图片时发现截图只有一半显示不全,另外还有一个问题就是截图时截取当前可视区域的问题(出现滚动条只保......
  • 大数据技术知识点小结
     一、数据采集 1. 数据源:包括结构化数据(如数据库中的数据)、半结构化数据(如XML、JSON等)和非结构化数据(如文本、图像、音频、视频等)。2. 采集工具:如Flume、Sqoop等,用于从不同的数据源抽取数据并传输到大数据存储系统中。 二、数据存储 1. Hadoop分布式文件系......