无缝集成Vue 3的Teleport组件到Vue 2项目中

238 阅读1分钟

vue2-teleport-next是一个轻量级的npm包(commonjs约1.8kb),旨在将Vue 3的teleport组件功能无缝整合到Vue 2项目中。对于不熟悉的朋友,Vue 3引入了teleport组件,它使开发者能够在DOM树中的任何位置动态渲染子组件。现在,有了vue2-teleport-next,就可以在不需要完全迁移到Vue 3的情况下,充分利用teleport的强大功能。

npm地址:www.npmjs.com/package/vue…

👉演示地址

stackblitz

👍主要特点

  • 轻松集成: 轻量且易于集成到 Vue 2 项目中,为 Vue 2 开发人员提供逐步采用 Vue 3 特性的无缝过渡。

  • 高效简洁: 使用vue2的虚拟dom实现,性能出色

📦安装方法

npm install vue2-teleport-next

🚗使用示例

<template>
  <div>
      <button @click="modalOpen = true">
          打开全屏模态框!(带teleport!)
      </button>

      <Teleport to="body">
        <div v-if="modalOpen" class="modal">
          <div>
            我是一个被传送的模态框!
            (我的父级是"body")
            <button @click="modalOpen = false">
              关闭
            </button>
          </div>
        </div>
      </Teleport>
  </div>
</template>

<script>
import Teleport from 'vue2-teleport-next';

export default {
  components: {
    Teleport,
  },
  data() {
    return {
      modalOpen: false
    }
  }
}
</script>

✨属性参考

属性名称类型描述
to[String, HTMLElement]指定目标路径或元素。
disabled布尔值表示组件是否被禁用。
multiSlot布尔值表示组件是否支持多个插槽。

❗注意

  • multiSlot属性: 使用multiSlot属性可以定制组件的行为。将其设置为true以接收所有插槽内容,并在外层添加一个额外的节点。将其设置为false以省略外层节点,仅渲染第一个插槽的内容。默认值为false

觉得好用的,请给开发者加个小星星😁

github.com/jackiotyu/v…

后面抽时间再写写原理🚀