Vue.js 中<teleport> 组件,<Suspense> 组件

embedded/2024/10/10 21:44:48/

 一、<teleport> 组件     

在 Vue.js 中,<teleport> 是一个非常强大的内置组件,用于将子组件或元素“传送”到 DOM 中的不同位置,而不仅限于它们在父组件中的结构。这可以帮助解决许多布局和样式方面的问题,尤其是在模态框、工具提示、下拉菜单等情况下。

 1.使用场景

a.模态框:将模态框元素放在 <body> 中,而不在组件的层次结构中。

b.工具提示:将工具提示内容放置在文档的某个特定位置,以避免被其他元素遮挡。

c.下拉菜单:在某个特定区域(例如导航栏)中渲染下拉内容,以保持样式和布局的一致性。

2.属性
  • to: 这是一个字符串,指定要将内容传送到的目标位置。可以是一个 CSS 选择器,也可以是一个 DOM 节点。
  • disabled: 布尔值,指示是否禁用 teleport。设置为 true 时,内容不会被传送,仍然在原来的位置渲染。
3.示例
<template><div class="outer"><h3>父组件</h3><img :src="imgUrl" alt=""><Modal /></div>
</template>
<script setup>
import  Modal from './Modal.vue'
import {ref} from 'vue'
let imgUrl=ref('https://p0.ssl.qhimgs1.com/sdr/400__/t0473991f73e7e7f1be.jpg')
</script>
<style lang="scss" scoped>
.outer{width: 600px;height: 500px;background-color: #ededed;filter:saturate(200%)
}
</style><template><button @click="showModalFlag=true">展示弹窗</button><teleport to="body"><div class='modal' v-if="showModalFlag"><h2>弹窗标题</h2><p>弹窗内容</p><button @click="showModalFlag=false">关闭弹窗</button></div></teleport>
</template>
<script setup>
import{ref} from 'vue'
let showModalFlag=ref(false)
</script>
<style scoped lang='scss'>
.modal {width: 300px;height: 200px;border:2px solid black;background-color: skyblue;font-size: 20px;color:white;position: fixed;top:50%;left: 50%;transform: translate(-150px,-100px);
}
</style>

position: fixed; 是一种定位属性,用于将元素固定在浏览器视口的特定位置。无论用户滚动页面,固定定位的元素都会保持在设定的位置上。这种特性常用于创建导航条、弹出窗口和悬浮按钮等。

filter: saturate(200%) 是用于调整图像或元素颜色饱和度的一个属性。它使元素的颜色更加鲜艳和饱和。

二、<Suspense> 组件

在 Vue 3 中,<Suspense> 组件用于处理异步组件的加载状态,使开发者可以在异步操作完成之前渲染一个等待状态(如加载指示器)。这对于需要延迟加载或处理异步数据的场景非常有用,比如在使用 async 组件时。

<Suspense> 组件在 Vue 3 中为处理异步操作提供了一个优雅的方式。它允许你在加载异步组件时提供用户友好的反馈,提升用户体验。通过合理使用 <Suspense>,可以更有效地管理异步加载逻辑和状态。

1.基本概念
  • 异步组件:通过 defineAsyncComponent 创建的组件,这些组件在加载时可能需要一些时间。
  • 悬停状态:使用 <Suspense> 时,可以指定在异步组件加载时展示的内容,比如 loading 状态或备用内容
2.基本语法
<Suspense><template #default><!-- 这里是异步组件 --></template><template #fallback><!-- 这里是加载状态 --></template>
</Suspense>
 3.示例
<template><div class="outer"><h3>父组件</h3><Suspense><template v-slot:default> <Child /></template><template v-slot:fallback> <h2>加载中...</h2></template></Suspense></div>
</template>
<script setup>
import  Child from './Child.vue'
import {Suspense} from 'vue'
</script><template><p>{{ hitokoto }}</p>
</template>
<script setup>
import { ref, onMounted } from 'vue';
import axios from 'axios';
const hitokoto = ref('');
const fetchHitokoto = async () => {try {const response = await axios.get('https://v1.hitokoto.cn');hitokoto.value = response.data.hitokoto; console.log(hitokoto.value);} catch (error) {console.error('Error fetching hitokoto:', error);}
};
onMounted(() => {fetchHitokoto();
});
</script>


http://www.ppmy.cn/embedded/125552.html

相关文章

zotero主页面显示的标签名与信息处的标签名不一致

问题描述&#xff1a;我在网页导入了论文之后&#xff0c;自动匹配了一些该论文的信息&#xff0c;但是很多都是空的&#xff0c;最大的问题就是找不到出版物的信息&#xff1b; 解决&#xff1a;最后发现在信息中是叫刊名&#xff0c;其中年对应的是在日期部分&#xff1b; 极…

java项目之美食推荐商城的设计与实现源码(springboot+vue+mysql)

项目简介 美食推荐商城的设计与实现实现了以下功能&#xff1a; 美食推荐商城的设计与实现的主要使用者分为&#xff1a; 管理员在后台主要管理购物车管理、字典管理、公告信息管理、留言板管理、美食管理、美食收藏管理、美食评价管理、美食订单管理、商家管理、用户管理、管…

需求9——通过一个小需求来体会service层的作用

昨天在完成了睿哥的需求验收之后&#xff0c;暂时没有其他任务&#xff0c;因此今天可能会比较有空闲时间。趁着这个机会&#xff0c;我打算把之前完成的一些需求进行总结&#xff0c;方便以后复习和参考。 在8月份的时候&#xff0c;我负责了一个需求&#xff0c;该需求的具体…

Java API接口开发规范

文章目录 一、命名规范1.1 接口命名1.2 变量命名 二、接收参数规范2.1 请求体&#xff08;Body&#xff09;2.2 查询参数&#xff08;Query Parameters&#xff09; 三、参数检验四、接收方式规范五、异常类处理六、统一返回格式的定义七、API接口的幂等性&#xff08;Idempote…

网 络 安 全

网络安全是指保护网络系统及其所存储或传输的数据免遭未经授权访问、使用、揭露、破坏、修改或破坏的实践和技术措施。网络安全涉及多个方面&#xff0c;包括但不限于以下几个方面&#xff1a; 1. 数据保护&#xff1a;确保数据在传输和存储过程中的完整性和保密性&#xff0c;…

基于深度学习的复杂器官建模与模拟

基于深度学习的复杂器官建模与模拟是一项前沿技术&#xff0c;它利用深度学习模型从大量医学图像和临床数据中提取信息&#xff0c;生成复杂器官的三维结构模型&#xff0c;并对其进行功能模拟。这项技术对于医学诊断、手术规划、药物开发和疾病研究有重要意义&#xff0c;特别…

MySQL - 索引

索引&#xff08;index&#xff09;是帮助数据库高效获取数据的数据结果。 优点&#xff1a; 提高数据查询的效率&#xff0c;降低数据库的IO成本通过索引列对数据进行排序&#xff0c;降低数据排序的成本&#xff0c;降低CPU消耗 缺点&#xff1a; 索引会占用存储空间索引…

Spring(学习笔记)

<context:annotation-config/>是 Spring 配置文件中的一个标签&#xff0c;用于开启注解配置功能。这个标签可以让 Spring 容器识别并处理使用注解定义的 bean。例如&#xff0c;可以使用 Autowired 注解自动装配 bean&#xff0c;或者使用 Component 注解将类标记为 bea…