码农知识堂 - 1000bd
  •   Python
  •   PHP
  •   JS/TS
  •   JAVA
  •   C/C++
  •   C#
  •   GO
  •   Kotlin
  •   Swift
  • 「Vue系列」欢迎传送到“Teleport”星球


    前言

    大家好,我是落叶小小少年,我一直谨记学习不断,分享不停,输入的最好方式是输出,我始终相信

    • 用最核心代码更容易理解深的技术点
    • 用通俗易懂的话,讲难的知识点

    之前有学习并写了KeepAlive组件的实现原理,后来打算也把Teleport组件的原理也学习并记录下来,于是这几天便学习了下Teleport组件的实现原理,现在分享给大家,希望能和大家共同学习,进步

    Tips: 这样面试的时候你就可以信心满满的向面试官讲解这个知识点了🫣

    Teleport是什么

    Teleport 是一个内置组件,它可以将一个组件内部的一部分模板“传送”到该组件的 DOM 结构外层的位置去

    Teleport组件的功能

    1. 不用有什么问题

    想象一下如果你需要一个模态框的功能,这个组件的模板app组件内,但从整个应用试图的角度来看,它在 DOM 中应该被渲染在整个 Vue 应用外部的其他地方
    假设我们有一个模态框,并且是下面这样的写法

    • 1
    • 2
    • 3

    在这里插入图片描述

    这个MyModel组件是一个模态框,并且会被渲染到class为outer的的div标签下,但是我们通常希望这个模态框的蒙层能过遮挡页面上的任何元素

    那么我们把这个组件的z-index设置的最高,但是问题是模态框的z-index会受限于它的容器元素,如果有其他元素与

    重叠并有更高的 z-index,则它会覆盖住我们的模态框,所以我们自己实现这种效果就不太理想

    于是就有了Teleport组件的,它的功能就行为了解决这类受限制的dom问题,它可以将组件内部的一部分模板“传送”到该组件的 DOM 结构外层的位置去

    2. 如何使用

    
      

    Hello from the modal!

    • 1
    • 2
    • 3
    • 4
    • 5

    在这里插入图片描述

    Teleport的to属性就是指定挂载的位置,上面我们会将

    渲染到body上,而不会按照模板的dom层级渲染,于是就实现了dom的跨层级渲染

    tips*: 如果to的目标元素是由Vue渲染的,那么必须确保在挂载 之前先挂载该元素

    如何实现

    Teleport组件在渲染的时候走组件内部的渲染,而不走通用的渲染逻辑,这需要渲染器的支持,也就是在mount、unmount和move的时候做特殊渲染处理

    不了解挂载过程的可以去看Vue内置组件之KeepAlive原理里的组件的挂载过程

    简单实现(实现一个小而易懂的Teleport组件)

    1. Teleport 组件的属性

    type TeleportProps = {
       
      to: string | RendererElement | null // string或者已渲染的目标元素
      disabled?: boolean
    }
    export const
    • 1
    • 2
    • 3
    • 4
    • 5
  • 相关阅读:
    数据库系统原理与应用教程(079)—— MySQL 练习题:操作题 181-185(二十三):综合练习
    【开发者必看】【Health kit】运动健康服务典型问题合集
    CSS进阶向--配合Vue动态样式实现“超炫酷”圆环菜单
    C++ 课堂实验 编写一个能计算银行存款的小程序。
    110道Java初级面试题及答案(最新Java初级面试题大汇总)
    基于web在线餐饮网站的设计与实现——蛋糕甜品店铺(HTML+CSS+JavaScript)
    MySQL入门指南5(约束,索引,事务)
    CPU vs GPU:谁更适合进行图像处理?
    java计算机毕业设计ssm信息科技知识交流学习平台
    【数据结构】穿梭在二叉树的时间隧道:顺序存储的实现
  • 原文地址:https://blog.csdn.net/cyg_l02/article/details/128043659
  • 最新文章
  • 攻防演习之三天拿下官网站群
    数据安全治理学习——前期安全规划和安全管理体系建设
    企业安全 | 企业内一次钓鱼演练准备过程
    内网渗透测试 | Kerberos协议及其部分攻击手法
    0day的产生 | 不懂代码的"代码审计"
    安装scrcpy-client模块av模块异常,环境问题解决方案
    leetcode hot100【LeetCode 279. 完全平方数】java实现
    OpenWrt下安装Mosquitto
    AnatoMask论文汇总
    【AI日记】24.11.01 LangChain、openai api和github copilot
  • 热门文章
  • 十款代码表白小特效 一个比一个浪漫 赶紧收藏起来吧!!!
    奉劝各位学弟学妹们,该打造你的技术影响力了!
    五年了,我在 CSDN 的两个一百万。
    Java俄罗斯方块,老程序员花了一个周末,连接中学年代!
    面试官都震惊,你这网络基础可以啊!
    你真的会用百度吗?我不信 — 那些不为人知的搜索引擎语法
    心情不好的时候,用 Python 画棵樱花树送给自己吧
    通宵一晚做出来的一款类似CS的第一人称射击游戏Demo!原来做游戏也不是很难,连憨憨学妹都学会了!
    13 万字 C 语言从入门到精通保姆级教程2021 年版
    10行代码集2000张美女图,Python爬虫120例,再上征途
Copyright © 2022 侵权请联系2656653265@qq.com    京ICP备2022015340号-1
正则表达式工具 cron表达式工具 密码生成工具

京公网安备 11010502049817号