vue3学习笔记(10)Teleport 和 Suspense

Vue3专栏入口

一、Teleport(瞬移)基本使用

实现目标:将子组件放到body下
正常来说子组件像红色框内的一样,是在父组件下的,但通过Teleport可以实现将子组件放到body下,如蓝色框内的子组件。
在这里插入图片描述

1.1 目录

在这里插入图片描述

1.2 App.vue 代码

<template>
	<div>
		<h1>App父组件</h1>
		<hr />
		<Son />
		<hr />
		<!-- 使用teleport包裹 to到指定位置即可实现 -->
		<teleport to="body">
			<Son />
		</teleport>
	</div>
</template>

<script lang="ts">
	import { defineComponent } from "vue";
	import Son from "./components/son.vue";

	export default defineComponent({
		name: "App",
		components: {
			Son,
		},
		setup(props, context) {},
	});
</script>

<style scoped>
</style>

1.3 son.vue 代码

<template>
	<h1>Son 子组件</h1>
</template>

<script lang="ts">
	import { defineComponent } from "vue";

	export default defineComponent({
		name: "Son",
		setup(props, context) {},
	});
</script>

<style scoped>
</style>

二、 Suspenses

实现模板未加载出来时,展示一个loding…如下图所示
在这里插入图片描述
在这里插入图片描述

2.1 目录

在这里插入图片描述

2.2 App.vue 代码

<template>
	<div>
		<h1>App父组件</h1>
		<hr />
		<!-- 使用suspense包裹内部两个template -->
		<Suspense>
			<template #default>
				<Son />
			</template>
			<template v-slot:fallback>
				<h1>loding...</h1>
			</template>
		</Suspense>
	</div>
</template>

<script lang="ts">
	import { defineComponent } from "vue";
	import Son from "./components/son.vue";

	export default defineComponent({
		name: "App",
		components: {
			Son,
		},
		setup(props, context) {},
	});
</script>

<style scoped>
</style>

2.3 son.vue 代码

<template>
	<div>
		<h1>Son 子组件</h1>
		<h3>{{ msg }}</h3>
	</div>
</template>

<script lang="ts">
	import { defineComponent } from "vue";

	export default defineComponent({
		name: "Son",
		setup(props, context) {
			// 模拟一下2s的数据加载
			return new Promise((resolve, reject) => {
				setTimeout(() => {
					resolve({
						msg: "厉害哦",
					});
				}, 2000);
			});
		},
	});
</script>

<style scoped>
</style>
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值