<Teleport>是一个内置组件,使我们可以将一个组件的一部分模板“传送”到该组件的 DOM 层次结构之外的 DOM 节点中。
基本使用
传送门组件提供一种简洁而方式可以指定它里面内容的父元素(把元素传送到任意的元素内)。
<button @click="modelOpen = true">弹出一个模态窗口</button> |
- 为
<Teleport>指定的目标 to 期望接收一个 CSS 选择器字符串或者一个真实的 DOM 节点。让 Vue 去==传送这部分模板片段到 body 标签下==。
和组件一起使用
<Teleport>==只改变了渲染的 DOM 结构,它不会影响组件间的逻辑关系==。也就是说,如果<Teleport>包含了一个组件,那么该组件始终和这个使用了<teleport>的组件保持逻辑上的父子关系。传入的props和触发的事件也会照常工作。
传送门禁用
<Teleport :disabled="isMobile"></Teleport> |
- 场景:我们想要在桌面端将一个组件当做浮层来渲染,但在移动端则当作行内组件。可以对
<Teleport>动态地传入一个 disabled prop 来处理这两种不同情况。
可复用的Teleport
template
<Teleport to="#modals"> |
渲染结果:
<div id="modals"> |