学习vue3第十四节 Teleport 内置组件介绍

<Teleport></Teleport>  

作用目的:

用于将指定的组件或者元素传送到指定的位置;
通常是自定义的全局通用弹窗,绑定到 body 上,而不是在当前元素上面;

使用方法:

接收两个参数
to: 要将目标传到的位置; 可以是指定的元素、class、id
disabled: 是否禁止将目标传送到指定位置;Boolean

比如:

<Teleport 
to="body"
disabled="true"
></Teleport>

而为什么要使用teleport 内置组件呢?

比如:有这样一个需求,我们需要一个盒子顺时针旋转 45度;而这个盒子同时是一个弹窗的父级组件,并且这个盒子可以打开改弹窗;

父组件:

<template>
<div class="my-built-in">
  <!-- 内置组件 -->
  <div class="other-place" @click="handleOpen">
    其他dom位置
    <TelDialog 
    :isShowTel="isShowTel"
    :telCon="telCon" 
    @onCloseDialog="handleClose"
    ></TelDialog>
  </div>
</div>
</template>
<script setup>
import { ref, reactive } from 'vue'
import TelDialog from './components/telDialog.vue'
const isShowTel = ref(false)
const telCon = ref('This is a Teleport component.')
const handleClose = () => {
  isShowTel.value = false
}
const handleOpen = () => {
  isShowTel.value = true
}
</script>
<style lang='scss' scoped>
.my-built-in{
  position: relative;
  width: 100px;
  height: 100px;
  background-color: #00ff00;
  left: 200px;
  transform: rotate(45deg);
}
  
</style>

弹窗组件:

<template>
  <div class="my-tel-container" v-if="props.isShowTel">
    <div class="my-tel-title">Teleport 弹窗</div>
    <div class="my-tel-content">{{ props.telCon }}</div>
    <div class="my-tel-foot">
      <el-button type="primary" class="close-btn" @click="handleClose">关闭teleport 弹窗</el-button>
    </div>
  </div>
</template>
<script setup>
import { ref } from 'vue'
const props = defineProps({
  isShowTel:{
    type: Boolean,
    default: false,
  },
  telCon: {
    type: String,
    default: ''
  }
})
const emits = defineEmits(['onCloseDialog'])
const handleClose = () => {
  emits('onCloseDialog')
}
</script>
<style lang='scss' scoped>
.my-tel-container{
  position: fixed;
  top:50%;
  left: 50%;
  width: 440px;
  height: auto;
  background-color: aqua;
  box-shadow: 0 2px 4px 0 rgba(0,0,0, .3);
  box-sizing: border-box;
  padding: 0 16px 16px;
  .my-tel-title{
    width: 100%;
    height: 46px;
    text-align: center;
    line-height: 46px;
    font-size: 16px;
    color: #333;
  }
  .my-tel-content{
    width: 100%;
    height: 200px;
  }
  .my-tel-foot{
    width: 100%;
    height: 46px;
    display: flex;
    justify-content: right;
    align-content: center;
  }
}
</style>

我们会发现写好之后在没有使用teleport 组件的情况下 弹窗也跟着旋转了45度,这并不是我们想要的;为什么会出现这种情况呢?
如图:
请添加图片描述

我们需要的是即使父组件发上了旋转 位移等,弹窗依然是位于浏览器的正中央;
此时我们就可以通过 <Teleport></Teleport> 组件来将弹窗组件实际渲染的位置更改到 body 上;但是这样并不影响 组件直接的通讯;

更改父组件为:

<template>
<div class="my-built-in">
  <!-- 内置组件 -->
  <div class="other-place" @click="handleOpen">
    其他dom位置
    <!-- **只需要添加 Teleport 组件即可,disabled 接收一个布尔值,默认是falsetrue代表不传送到指定位置 body上** -->
    <Teleport to="body" :disabled="false">
      <TelDialog 
      :isShowTel="isShowTel"
      :telCon="telCon" 
      @onCloseDialog="handleClose"
      ></TelDialog>
    </Teleport>
  </div>
</div>
</template>

请添加图片描述

注意事项:

a、在使用teleport 组件时,需要确保传送的位置dom已经渲染完成,即to的位置dom已完成渲染,否则将无法实现传送;
b、同时可以通过给disabled 动态传入一个Boolean 值,来控制是否要将元素或dom传送到指定的位置;

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:/a/522361.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

刷题日记——机试(1)

1. 字母排序 分析——不排序解题 创建一个大小为128的数组sheet&#xff0c;序号表示ascii码强转为int表示的数值&#xff0c;对应的数组值表示该ascii码在输入字符串中出现的次数设置一个max变量和id变量&#xff0c;max初值为0&#xff0c;从下标为((int)‘A’)开始遍历shee…

考研数学|汤家凤《1800》题太多!怎么刷效果最好?

考研数学三的备考过程中&#xff0c;汤家凤1800题是很多考生选择的一本重要的习题集。它包含了大量的题目&#xff0c;难度覆盖了从基础到提高&#xff0c;甚至有一些题目的难度会超过实际考试的平均水平&#xff0c;目的是为了帮助考生全面提升解题能力&#xff0c;尤其是在应…

Golang | Leetcode Golang题解之第11题盛最多水的容器

题目&#xff1a; 题解&#xff1a; func maxArea(height []int) int {res : 0L : 0R : len(height) - 1for L < R {tmp : math.Min(float64(height[L]), float64(height[R]))res int(math.Max(float64(res), tmp * float64((R - L))))if height[L] < height[R] {L} el…

代码+视频,手动绘制logistic回归预测模型校准曲线(Calibration curve)(2)

校准曲线图表示的是预测值和实际值的差距&#xff0c;作为预测模型的重要部分&#xff0c;目前很多函数能绘制校准曲线。 一般分为两种&#xff0c;一种是通过Hosmer-Lemeshow检验&#xff0c;把P值分为10等分&#xff0c;求出每等分的预测值和实际值的差距 另外一种是calibrat…

扫描电镜如何能拍到样品的好的形貌?

扫描电镜是表征材料微观形貌的有力工具&#xff0c;它能够呈现样品的精细结构。然而&#xff0c;要拍摄出高质量的样品形貌并非易事&#xff0c;除了要熟悉扫描电镜的各种功能&#xff0c;还需要掌握一些技巧。本文将介绍如何利用景深、倾斜校正、动态聚焦等功能以及合轴和消像…

Day30 线程安全之窗口售票问题(含代码)

Day30 线程安全之窗口售票问题&#xff08;含代码&#xff09; 一、需求&#xff1a; 铁道部发布了一个售票任务&#xff0c;要求销售1000张票&#xff0c;要求有3个窗口来进行销售&#xff0c; 请编写多线程程序来模拟这个效果&#xff08; 注意&#xff1a;使用线程类的方式…

LABVIEW--正弦+高斯噪声信号及滤波

前面板信号 后面板 LABVIEW源程序链接&#xff1a;https://pan.baidu.com/s/11B-75i4fHZwWQyjxn9yCyQ?pwd7tfj 提取码&#xff1a;7tfj

设计模式之建造者模式:灵活可扩展的对象创建过程

目录 一、什么是建造者模式 二、建造者模式的应用场景 三、建造者模式的优缺点 3.1. 优点 3.2. 缺点 四、建造者模式示例 4.1. 问题描述 4.2. 问题分析 4.3. 代码实现 五、建造者模式的另一种实现方式 六、总结 一、什么是建造者模式 建造者模式&#xff08;Builder…

WEBAPIS知识案例总结(续)

其他事件 页面加载事件 加载外部资源&#xff08;如图片&#xff0c;外联css和js等&#xff09;加载完毕时触发的事件有时候需要等页面资源全部处理完之后做一些事情老代码喜欢把script写在head中&#xff0c;这时候直接找dom元素找不到事件名&#xff1a;load监听页面所有资…

【热门话题】Stable Diffusion:本地部署教程

&#x1f308;个人主页: 鑫宝Code &#x1f525;热门专栏: 闲话杂谈&#xff5c; 炫酷HTML | JavaScript基础 ​&#x1f4ab;个人格言: "如无必要&#xff0c;勿增实体" 文章目录 Stable Diffusion&#xff1a;本地部署教程一、引言二、环境准备1. 硬件配置2. …

考研数学|怎样刷题更有效率?这些坑千万别踩!

考研数学刷题的这些困扰相信大部分的同学都是有的&#xff0c;为此我整理了一些提高考研数学刷题效率的方法和策略&#xff0c;希望能帮助你更有效地学习和解题。 首先要制定合理的刷题计划&#xff0c;首先遵循“教材→视频→全书或辅导讲义→习题集→真题→专项训练→模拟套…

vue项目开发实战案例

目录 项目概述 1. 项目初始化 2. 商品展示 3. 购物车管理 4. 订单处理 5. 路由管理 6. 样式和交互优化 7. 部署和测试 总结 Vue.js 是一种流行的前端 JavaScript 框架&#xff0c;广泛应用于现代 Web 开发中。下面是一个简单的 Vue 项目开发实战案例&#xff0c;涵盖了…

C++的并发世界(七)——互斥锁

0.死锁的由来 假设有两个线程T1和T2&#xff0c;它们需要对两个互斥量mtx1和mtx2进行访问。而且需要按照以下顺序获取互斥量的所有权&#xff1a; -T1先获取mte1的所有权,再获取mt2的所有权。 -T2先获取 mtx2的所有权。再铁取 mtx1的所有权。 如果两个线程同时执行&#xff0c…

Redis主从复制、哨兵模式、Cluster集群

目录 一、Redis主从复制 1、主从复制介绍 2、主从复制原理 ​编辑 3、主从复制的作用 4.Redis主从复制实验搭建 1. 关闭防火墙和安装依赖环境 2. 解压安装包 3. 编译并安装到指定目录 4. 执行脚本文件 5. 做软连接 6. 启动redis并查看端口 7. 重启redis 8. 修改主…

秋招刷题4(动态规划)

1.购物单 import java.util.Scanner;public class Main {public static void main(String[] args){Scanner sc new Scanner(System.in);int N sc.nextInt();int m sc.nextInt();Goods[] goods new Goods[m];for(int i 0; i < m; i){goods[i] new Goods();}for(int i …

Matlab|含氢微网优化调度模型

目录 1 主要内容 模型示意图 目标函数 2 部分程序 3 程序结果 4 下载链接 1 主要内容 最近咨询含氢微网优化调度模型的同学较多&#xff0c;本次就分享一个高质量的源码资源。该程序方法复现《Simulation of design and operation of hydrogen energy utilization system…

数据生成 | Matlab实现基于K-means和SVM的GMM高斯混合分布的数据生成

数据生成 | Matlab实现基于K-means和SVM的GMM高斯混合分布的数据生成 目录 数据生成 | Matlab实现基于K-means和SVM的GMM高斯混合分布的数据生成生成效果基本描述模型描述程序设计参考资料 生成效果 基本描述 1.Matlab实现基于K-means和SVM的GMM高斯混合分布的数据生成&#xf…

揭秘动态内存管理,让你少走弯路!

1. 为什么要有动态内存分配 2. malloc和free 3. calloc和realloc 4. 常⻅的动态内存的错误 5. 动态内存经典笔试题分析 6. 柔性数组 7. 总结C/C中程序内存区域划分 正文开始&#xff1a; 1. 为什么要有动态内存分配 我们已经掌握的内存开辟⽅式有&#xff1a; int…

LeetCode---391周赛

题目列表 3099. 哈沙德数 3100. 换水问题 II 3101. 交替子数组计数 3102. 最小化曼哈顿距离 一、哈沙德数 简单的模拟题&#xff0c;代码如下 class Solution { public:int sumOfTheDigitsOfHarshadNumber(int x) {int s 0, tmp x;while(tmp){stmp%10;tmp/10;}return x…

Redis 5种数据结构常用命令

文章目录 1 字符串2 哈希3 列表4 集合5 有序集合 1 字符串 命令描述set key value设置指定key的值为valueget key获取指定key的值del key [key …]删除一个或多个keymset key value [key value …]设置多个key的值mget key [key …]获取一个或多个key的值incr key将key中储存的…