Vue3的传送组件

298 阅读1分钟

Teleport传送组件

Teleport是Vue3.0新增的一个内置组件,这个东西可以将我们的模板渲染至指定的一个DOM节点,让他不受这个父级的style一个影响

当我们子组件的样式设置的position: absolute;,会受到父组件style的影响,当父组件不设置position: relative;,子组件就相当于body去做的定位,设置了就相当于父组件的位置做定位;这里用css的基础来说做一个比喻;

当子组件不想受父组件样式的影响,这时候就可以用V3的传送组件Teleport,把子组件放入即可

<template>
  <div class="parent">
    春风吹又生
    <Teleport>
      <SyncVue></SyncVue>
    </Teleport>
  </div>
</template>
<script setup lang="ts">
import SyncVue from './components/Dialog/index.vue'
</script>

to属性

Teleport的to属性,当没有使用 Teleport 包裹的时候,子组件还是在.parent下面的一个子级,加上Teleport的就可以任意传送到自己想要的位置,使用to 属性就可以了,可以接收各种选择器,比如 IdClass,还有元素选择器等,基本常用的选择器都可以接收

这里 to="body",就会把子组件传送到 body 里面,就不会在父组件的parent下面了,这就是Teleport的一个妙用

    <Teleport to="body">
      <SyncVue></SyncVue>
    </Teleport>

disabled

disabled 接收truefalse,默认是false,设置true,to属性就不起作用,可以动态的控制disabled属性来控制to的显示和隐藏

    <Teleport :disabled="true" to="body">
      <SyncVue></SyncVue>
    </Teleport>