Teleport Vue 3.0新特性之一。
Teleport 是一种能够将我们的模板渲染至指定DOM节点,不受父级style、v-show等属性影响,但data、prop数据依旧能够共用的技术;
类似于 React 的 Portal。
主要解决的问题 因为Teleport节点挂载在其他指定的DOM节点下,完全不受父级style样式影响
使用方法
通过to 属性 插入指定元素位置 to=”body” 便可以将Teleport 内容传送到指定位置。
<Teleport to="body">
<Loading></Loading>
</Teleport>
也可以自定义传送位置 支持 class id等 选择器
<div id="app"></div>
<div class="modal"></div>
<Teleport to=".modal">
<Loading></Loading>
</Teleport>
<Teleport to=".modal1">
<Loading></Loading>
</Teleport>
<Teleport to=".modal2">
<Loading></Loading>
</Teleport>
v-if的优先级大于teleport
<template>
<div class="content">
<teleport to="body">
<div class="teleport">我是胡雪</div>
</teleport>
</div>
</template>
<script setup lang="ts">
</script>
<style lang="less" scope>
.teleport {
position: absolute;
top: 10px;
right: 10px;
border: 1px solid red;
}
.content {
padding: 20px;
flex: 1;
margin: 20px;
overflow: auto;
border: 1px solid #ccc;
}
</style>