背景
如下图中间tab页每个页面内容都很多,加载很慢,想要加载过程中添加占位内容增强用户体验

流程
父组件渲染
↓
触发异步组件加载(执行 loader)
↓
↓------------------ 如果加载时间 > delay(默认 200ms)------------------↓
↓ ↓
显示 loadingComponent(占位) ↓
↓ ↓
等待 loader 完成 →→→→→→→→→→→→→→→→→→→→→→→→→→→→→→→→→ 加载完成 →→→ 替换为实际组件
实现
import { defineAsyncComponent } from 'vue';
import { AsyncLoading } from '@/components/AsyncLoading/index.js';
// 异步加载组件
export const loadAsyncComponent = (Loader) =>
defineAsyncComponent({
loader,
loadingComponent: AsyncLoading,
delay: 200,
});