• Vue3从入门到实践:深度了解新组件


    1.Teleport

    概念:Teleport(传送门)是一个新的特性,用于在DOM中的任意位置渲染组件。它允许你将组件的内容渲染到DOM中的另一个位置,而不受组件层次结构的限制。

    下面举出例子解释: 

    1.新建App.vue文件作为父组件

    解析:这段代码的作用是创建一个外层容器,显示一个标题、一张图片,并包含一个自定义的模态框组件。 

     2.新建Modal.vue作为子组件

    解析:这段代码是一个简单的Vue单文件组件,用于实现一个点击按钮展示模态框的功能。

    展示:

     

    点击”展示窗口后“ 按钮后

    这样看,你可能会认为窗口以父元素为参考,其实不然,而是整个视口

    所以给你修改了一下窗口样式,使其更明显些

    3. 此时我在父组件Css属性添加一个关于饱和度(filter)的属性

    4. 然后再点击”展示窗口“,你会发现窗口不能再参考视口了,而是父元素容器了。

    提醒:这里父元素和窗口是包裹关系(父子组件嘛)

    所以这里强调的是父组件的某些属性会影响了窗口的(position: fixed),这时候可以引用Teleport了

    5.在Modal.vue将模块放入到Teleport中

    解析:以上代码使用了元素将弹窗的内容传送到body元素中,使其在DOM结构中脱离当前组件的范围,可以在任何位置显示。

    所以Teleport可以将子容器的div传送到指定的容器里面,同时里面的逻辑不影响,只是结构放出去了。所以你可以将Teleport称之为”传送门“ 

    App.vue代码: