作者:白猫警员123 | 来源:互联网 | 2022-03-21 11:47
门户(Portal)的概念是Vue3的新功能之一,也就是将模板HTML移至DOM的不同部分的方法。Portal是React中的常见功能,Vue2的portal-vue 库也提供了相似的功能。在Vue3中用Teleport对这个概念提供了原生支持。本文将介绍Teleport的相关用法
在本文中,我们将介绍:
- Teleport 的目的
- Teleport 的例子
- 一些很有意思的代码交互
Teleport 的目的
首先是什么时候以及使用这个 Teleport 功能。
在开发较大的 Vue 项目时应该以可重用的逻辑去组织代码。但是当处理某些类型的组件(如模式、通知或工具提示)时,模板 HTML 的逻辑可能不会和我们希望渲染元素处于相同的文件中。
实际上在大多数情况下,与 Vue 的 DOM 完全分开处理相比,处理这些元素要容易得多。因为嵌套组件的位置、z-index 和样式等这些东西,可能由于需要处理其所有父对象的作用域而变得棘手。
而这些正是 Teleport 的用武之地。我们可以在逻辑所在的组件中编写模板代码,因为这样我们可以使用组件的数据或 props。
如果不用 Teleport,我们还必须担心事件传播会把逻辑从子组件传递给 DOM 树。
Teleport 是怎样工作的
假设有一些子组件,我们想在其中触发弹出的通知。正如刚刚讨论的那样,如果将通知以完全独立的 DOM 树渲染,而不是 Vue 的根 #app 元素,会更加简单。
首先编辑 index.html 并在 之前添加一个
。
接下来创建触发渲染通知的组件。
//VuePortals.vue
This is rendering outside of this child component!
在这代码段中,按下按钮时,将渲染通知 2 秒钟。但是我们的主要目标是用 Teleport 获取通知并在 VUE 程序外部渲染。
如你所见,Teleport 有一个必填属性:to
to 属性使用有效的 DOM 查询字符串,它可以是:
- 元素的 ID
- 元素的类
- 数据选择器
- 响应查询字符串
由于我们在 #portal-target 中传递了代码,所以 Vue 程序将找到我们包含在 index.html 中的 #portal-target div,它会传送门户中的所有代码并将其渲染在该 div 中。
下面是结果:
检查元素并查看 DOM,可以很清楚地了解都发生了什么。
我们可以使用 VuePortals 组建中的所有逻辑,但是需要告诉我们的项目渲染在其他地方的哪个模板代码。
以上就是详解Vue3中的Teleport的详细内容,更多关于Vue3 中的Teleport的资料请关注其它相关文章!
推荐阅读
-
探讨了一个包含纯虚函数的C++代码片段,分析了其中的语法错误及逻辑问题,并提出了修正方案。 ...
[详细]
蜡笔小新 2024-11-22 19:05:57
-
本文详细介绍如何安装和配置DedeCMS的移动端站点,包括新版本安装、老版本升级、模板适配以及必要的代码修改,以确保移动站点的正常运行。 ...
[详细]
蜡笔小新 2024-11-22 18:44:25
-
-
这篇教程是向脚本之家的朋友介绍3DSMAX制作超现实的体育馆模型方法,教程制作出来的体育馆模型非常地不错,不过教程有点难度,需要有一定基础的朋友学习,推荐到脚本之家,喜欢的朋友可 ...
[详细]
蜡笔小新 2024-11-22 16:07:10
-
在Linux系统的默认安装过程中,Boot分区通常分配的空间为200MB左右,理论上这个大小足以满足日常需求。然而,随着系统的频繁更新,尤其是内核的不断升级,如果不及时清理过期的内核版本,Boot分区很容易出现空间不足的问题。 ...
[详细]
蜡笔小新 2024-11-22 16:01:10
-
本文介绍了如何在AngularJS应用中使用ng-repeat指令创建可单独点击选中的列表项,并详细描述了实现这一功能的具体步骤和代码示例。 ...
[详细]
蜡笔小新 2024-11-22 15:56:12
-
尽管在WPF中工作了一段时间,但在菜单控件的样式设置上遇到了一些基础问题,特别是关于如何正确配置前景色和背景色。 ...
[详细]
蜡笔小新 2024-11-22 15:30:54
-
本文介绍了如何在ASP.NET中使用HTML和JavaScript创建一个动态更新的进度条,并通过Default.aspx页面进行展示。 ...
[详细]
蜡笔小新 2024-11-22 15:00:08
-
在项目冲刺的最后一天,团队专注于软件用户界面的细节优化,包括调整控件布局和字体设置,以确保界面的简洁性和用户友好性。 ...
[详细]
蜡笔小新 2024-11-22 14:51:19
-
本文详细介绍了 Vue CLI 的基础使用方法,包括环境搭建、项目创建、常见配置及路由管理等内容,适合初学者快速掌握 Vue 开发环境。 ...
[详细]
蜡笔小新 2024-11-22 14:48:35
-
本文探讨了如何在 Spring MVC 框架下,通过自定义注解和拦截器机制来实现细粒度的权限管理功能。 ...
[详细]
蜡笔小新 2024-11-22 14:35:02
-
当用户从页面离开时(如关闭页面或刷新页面),会触发 onunload 事件,此时可以执行预设的脚本。需要注意的是,不同的浏览器对 onunload 事件的支持程度可能有所不同。 ...
[详细]
蜡笔小新 2024-11-22 14:17:44
-
默认情况下,Git 使用 Nano 编辑器进行提交信息的编辑,但如果您更喜欢使用 Vim,可以通过简单的配置更改来实现这一变化。本文将指导您如何通过修改全局配置文件来设置 Vim 作为默认的 Git 提交编辑器。 ...
[详细]
蜡笔小新 2024-11-22 14:08:35
-
Java 11引入了一种新的垃圾收集器——ZGC,由Oracle公司研发,旨在支持TB级别的内存容量,并保证极低的暂停时间。本文将探讨ZGC的开发背景、技术特点及其潜在的应用前景。 ...
[详细]
蜡笔小新 2024-11-22 13:36:53
-
本文介绍了如何通过Node.js及其psd2json模块,快速实现PSD文件的自动化切图过程,以适应项目中频繁的界面更新需求。此方法不仅提高了工作效率,还简化了从设计稿到实际应用的转换流程。 ...
[详细]
蜡笔小新 2024-11-22 13:21:24
-
本文详细介绍了如何在最新版本的Xcode中重命名iOS项目,包括项目名称、应用名称及相关的文件夹和配置文件。通过本文,开发者可以轻松完成项目的重命名工作。 ...
[详细]
蜡笔小新 2024-11-22 13:16:52
-