vue2如何实现vue3的teleport

vue2如何实现vue3的teleport

目录

vue2实现vue3的teleport

vue3新特性teleport介绍

teleport是什么

teleport怎么使用

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 中的任何内容都将渲染在目标元素中

以上为个人经验,希望能给大家一个参考,也希望大家多多支持易知道(ezd.cc)。

推荐阅读