4 min read
•Question 17 of 37mediumWhat are Async Components in Vue?
Lazy loading components for performance.
What You'll Learn
- defineAsyncComponent
- Loading and error states
- Suspense integration
Basic Async Component
code.jsJavaScript
import { defineAsyncComponent } from 'vue'
const AsyncComp = defineAsyncComponent(() =>
import('./components/HeavyComponent.vue')
)With Loading/Error States
code.jsJavaScript
const AsyncComp = defineAsyncComponent({
loader: () => import('./HeavyComponent.vue'),
loadingComponent: LoadingSpinner,
errorComponent: ErrorDisplay,
delay: 200, // Show loading after 200ms
timeout: 3000 // Timeout after 3s
})With Suspense
code.txtVUE
<template>
<Suspense>
<template #default>
<AsyncComponent />
</template>
<template #fallback>
<LoadingSpinner />
</template>
</Suspense>
</template>
<script setup>
const AsyncComponent = defineAsyncComponent(() =>
import('./AsyncComponent.vue')
)
</script>Route-Level Code Splitting
code.jsJavaScript
const routes = [
{
path: '/dashboard',
component: () => import('./views/Dashboard.vue')
}
]