欢迎来到代码驿站!

vue

当前位置:首页 > 网页前端 > vue

vue2如何实现vue3的teleport

时间:2023-02-06 10:30:25|栏目:vue|点击:

vue2实现vue3的teleport

不支持同一目标上使用多个teleport(代码通过v-if就能实现)

组件

<script>
    export default {
        name: 'teleport',
        props: {
            /* 移动至哪个标签内,最好使用id */
            to: {
                type: String,
                required: true
            }
        },

        mounted() {
            document.querySelector(this.to).appendChild(this.$el)
        },

        destroyed() {
            document.querySelector(this.to).removeChild(this.$el)
        },

        render() {
            return <div>{this.$scopedSlots.default()}</div>
        }
    }
</script>

使用

<teleport to="#header__left">
    <div>
        当前组件引用{{msg}}
    </div>
</teleport>

vue3新特性teleport介绍

teleport是什么

Teleport 是一种能够将我们的模板移动到 DOM 中 Vue app 之外的其他位置的技术。

如果我们嵌套在 Vue 的某个组件内部,那么处理嵌套组件的定位、z-index 和样式就会变得很困难。

使用Teleport 就可以方便的解决组件间 css 层级问题

teleport怎么使用

要使用teleport,首先要在页面上添加一个元素,我们要将模态内容移动到该页面

下面举个例子

// index.html
<body>
  ...
  <div id="app"></div><!--Vue mounting element-->
  <div id="modal-wrapper">
    <!--modal should get moved here-->
  </div>
</body>

我们将模态内容包装在 teleport 组件中,还需要指定一个 to 属性,为该属性分配一个查询选择器,以标识目标元素,在本例中为 #modal-wrapper

// App.vue
<template>
  <button @click="toggleModalState">Open modal</button>
  <teleport to="#modal-wrapper">
    <modal v-if="modalOpen">
      <p>Hello, I'm a modal window.</p>
    </modal>
  </teleport>
</template>

teleport 中的任何内容都将渲染在目标元素中

上一篇:vueRouter--matcher之动态增减路由方式

栏    目:vue

下一篇:详解vue移动端日期选择组件

本文标题:vue2如何实现vue3的teleport

本文地址:http://www.codeinn.net/misctech/225181.html

推荐教程

广告投放 | 联系我们 | 版权申明

重要申明:本站所有的文章、图片、评论等,均由网友发表或上传并维护或收集自网络,属个人行为,与本站立场无关。

如果侵犯了您的权利,请与我们联系,我们将在24小时内进行处理、任何非本站因素导致的法律后果,本站均不负任何责任。

联系QQ:914707363 | 邮箱:codeinn#126.com(#换成@)

Copyright © 2020 代码驿站 版权所有