Fragment组件和Teleport组件以及Suspense组件
2023-12-15 15:27:16
Fragment组件
Fragment组件
在vue2中:组件必须有一个根标签
在vue3中:组件可以没有根标签,内部会将多个标签包含在一个Fragment虚拟元素中
好处:减少标签层级,减小内存占用
Teleport组件
Teleport组件
什么是Teleport? -- Teleport是一种能够将我们的组件html结构移动到指定位置的技术
具体案例代码如下:实现一个对话框,位置应该展示body内
<button>点我开启弹窗</button>
<!-- to="body"会将该html元素展示在body内 -->
<teleport to="body">
<div></div>
...
<button>点我关闭弹窗</button>
</teleport>
最终在控制台上看的结构:
<body>
...
<!-- 会显示在这里 -->
<div></div>
...
<button>点我关闭弹窗</button>
</body>
备注:to不一定只能写在body,比如你创建一个<div id="box"></div>, 那么可以写成to="#box"
Suspense组件
1. 异步引入组件:
import {defineAsyncComponent} from 'vue';
const ChildC = defineAsyncComponent(() => import('./components/ChildC'))
2. 使用Suspend包裹组件,并配置好default与fallback
具体案例代码如下:
<template>
<Suspense>
<template v-slot:default>
<ChildC />
</template>
<!-- 还没加载出来时会先显示这个 -->
<template v-slot:fallback>
<div>稍等!!!加载中</div>
</template>
</Suspense>
</template>
<script>
// 静态引入
// import ChildC from './components/ChildC'
// 动态引入(异步引入)
import {reactive, defineAsyncComponent} from 'vue';
const ChildC = defineAsyncComponent(() => import('./components/ChildC'))
export default {
name: 'App',
components: { ChildC },
setup() {
const car = reactive({
money: 10,
name: 'car'
})
return {
car
}
}
}
</script>
文章来源:https://blog.csdn.net/weixin_50236973/article/details/135016913
本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。 如若内容造成侵权/违法违规/事实不符,请联系我的编程经验分享网邮箱:veading@qq.com进行投诉反馈,一经查实,立即删除!
本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。 如若内容造成侵权/违法违规/事实不符,请联系我的编程经验分享网邮箱:veading@qq.com进行投诉反馈,一经查实,立即删除!