详解Vue3中Teleport的使用
在本文中,我们将介绍:
- teleport 的目的
- teleport 的例子
- 一些很有意思的代码交互
teleport 的目的
首先是什么时候以及使用这个 teleport 功能。
在开发较大的 vue 项目时应该以可重用的逻辑去组织代码。但是当处理某些类型的组件(如模式、通知或工具提示)时,模板 html 的逻辑可能不会和我们希望渲染元素处于相同的文件中。
实际上在大多数情况下,与 vue 的 dom 完全分开处理相比,处理这些元素要容易得多。因为嵌套组件的位置、z-index 和样式等这些东西,可能由于需要处理其所有父对象的作用域而变得棘手。
而这些正是 teleport 的用武之地。我们可以在逻辑所在的组件中编写模板代码,因为这样我们可以使用组件的数据或 props。
如果不用 teleport,我们还必须担心事件传播会把逻辑从子组件传递给 dom 树。
teleport 是怎样工作的
假设有一些子组件,我们想在其中触发弹出的通知。正如刚刚讨论的那样,如果将通知以完全独立的 dom 树渲染,而不是 vue 的根 #app 元素,会更加简单。
首先编辑 index.html 并在 </body> 之前添加一个 <div>。
接下来创建触发渲染通知的组件。
在这代码段中,按下按钮时,将渲染通知 2 秒钟。但是我们的主要目标是用 teleport 获取通知并在 vue 程序外部渲染。
如你所见,teleport 有一个必填属性:to
to 属性使用有效的 dom 查询字符串,它可以是:
- 元素的 id
- 元素的类
- 数据选择器
- 响应查询字符串
由于我们在 #portal-target 中传递了代码,所以 vue 程序将找到我们包含在 index.html 中的 #portal-target div,它会传送门户中的所有代码并将其渲染在该 div 中。
下面是结果:
检查元素并查看 dom,可以很清楚地了解都发生了什么。
我们可以使用 vueportals 组建中的所有逻辑,但是需要告诉我们的项目渲染在其他地方的哪个模板代码。
以上就是详解vue3中的teleport的详细内容,更多关于vue3 中的teleport的资料请关注其它相关文章!
上一篇: 红烧豆腐要放料酒吗