Empecé a usar Vue JS 3 y me gustaría saber si puedo importar componentes (modales) durante el tiempo de ejecución. Lo intenté pero no funcionó.
watch:{ modal:{ handler(newModal){ App.component('modal', () => import(newModal)) } } },Puede leer sobre "Componentes asíncronos" en la documentación oficial de Vue 3 .
Básicamente, puede registrar un componente como asíncrono y se cargará automáticamente cuando intente renderizarse por primera vez.
defineAsyncComponent <template> <div> <Modal v-if="open" /> </div> </template> <script> export default { components: { MySyncComponent, Modal: defineAsyncComponent(() => import('./Modal.vue')) } } </script><script setup> : <script setup> const Modal = defineAsyncComponent(() => import('./Modal.vue')) </script> const Modal = defineAsyncComponent({ loader: () => import('./Modal.vue'), loadingComponent: ProgressSpinner, delay: 150, // waits 150ms before showing the loading spinner errorComponent: ErrorComponent, timeout: 2000 // if not loaded before 2s, will show error })<Suspense> : Con el componente Suspense , todos los componentes secundarios se tratarán como asíncronos de forma predeterminada. Estarán en su propio trozo de código.
<Suspense> <Modal v-if="open"> <!-- Loading as asynchronous --> <template #fallback> Loading... </template> </Suspense>