Vue3 使用 Teleport 封装 一个 Dialog
什么是 Teleport ?
:::info 是一个内置组件,它可以将一个组件内部的一部分模板“传送”到该组件的 DOM 结构外层的位置去。
简单的说,Teleport 可以把模板代码 传送到 其它组件中,:::
用法:
1. 通过 to 指定传送的位置
接收一个 to prop 来指定传送的目标。to 的 值可以是:
css 选择器字符串
DOM 元素对象
复制代码
2. 禁用 teleport
在某些场景下可能需要视情况禁用 。举例来说,我们想要在桌面端将一个组件当做浮层来渲染,但在移动端则当作行内组件。我们可以通过对 动态地传入一个 disabled prop 来处理这两种不同情况。
复制代码
3. 共享一个 Teleport
当多个 Teleport 的 to 值 都指向一个 css 选择器字符串 或者 元素标签时,且 Teleport 为显示状态时,多个 Teleport 的内容 会显示在一块。
复制代码
上面我们给 body 元素 添加了 两个目标, 显示状态时,都会显示出来。Modal 是 封装好的 Teleport。
封装一个 Dialog
复制代码
效果:
参考链接🔗
版权声明: 本文为 InfoQ 作者【程序员海军】的原创文章。
原文链接:【http://xie.infoq.cn/article/93d377915aeacc90d7d385857】。文章转载请联系作者。
评论