Vue3的通灵之术Teleport

前言

近期Vue3更新了一些新的内容,我都还没有一个一个仔细去看,但是还是有必要去解读一下新内容的。就先从Teleport 开始吧。

官方对 Teleport 的解释是:<Teleport> 是一个内置组件,它可以将一个组件内部的一部分模板"传送"到该组件的 DOM 结构外层的位置去。

这么说的话,像我这种火影迷,那不就相当于火影忍者里面的通灵之术吗?可以在任意位置召唤一个组件。

在一些特定的环境,这个组件确实会让业务逻辑变得非常好实现,他的使用场景有:

  • 弹窗
  • 浮动元素
  • 等等

怎么说都是一个很酷的组件嘞。

案例

下面就展示一个小案例:

html 复制代码
<template>
  <div>
    <button @click="changeTarget">改变目标位置</button>

    <teleport :to="target">
      <div class="modal">
        <p>这是一个动态目标的模态框</p>
      </div>
    </teleport>
  </div>
</template>

<script>
export default {
  data() {
    return {
      target: 'body'
    };
  },
  methods: {
    changeTarget() {
      this.target = '#someOtherElement'; // 改变目标位置
    }
  }
};
</script>

除了这种用法,在 Vue3.5 中可以使用 defer prop 推迟 Teleport 的目标解析,直到应用的其他部分挂载。但是需要注意的是,目标元素必须与 Teleport 在同一个挂载/更新周期内渲染,即如果 <div> 在一秒后才挂载,Teleport 仍然会报错。延迟 Teleport 的原理与 mounted 生命周期钩子类似。

相关推荐
做前端的娜娜子2 小时前
同一链接实现 PC Web 与移动 H5 自适应
前端·掘金·金石计划
小帅不太帅2 小时前
架构没变、规模没变,DeepSeek V4 Flash 正式版凭什么暴涨 47 分?
前端·aigc·deepseek
jarvisuni2 小时前
DeepSeekFlash前端依旧拉垮,而且变慢了很多!
前端·javascript·算法
卷福同学4 小时前
AI编程出海第二步:验证关键词能否做站
前端·人工智能·后端
赵庆明老师4 小时前
Vben精讲:21-详解web-antd:tsconfig.json
前端·json·vim
wc884 小时前
微软EDGE浏览器功能学习
前端·学习·edge
破z晓4 小时前
javascript 导出excel表
开发语言·javascript·excel
Csvn5 小时前
🎯 原生 `<dialog>` 元素:终于可以扔掉一半的自定义弹窗组件了?
前端
Csvn5 小时前
🎨 CSS @layer:用「层叠优先级」终结样式打架的世纪难题
前端