Empresas
Empregos
  • Sobre nós
  • Soluções
    • Publicação de vagas
      Publique sua vaga e receba candidatos qualificados em 48h.
    • Avaliações de candidatos
      Mais de 500 testes técnicos e psicológicos, mais anti-fraude.
    • Headhunting
      Busca executiva personalizada do início ao fim.
    • Folha de Pagamento + EOR
      Dispersão de folha e EOR em mais de 15 países da LATAM.
  • Preços
  • Empregos

0

337
Visualizações
La etiqueta <component> de Vue.js no carga los componentes importados; utilizando la API de composición

Estoy tratando de hacer una página simple que tenga un puñado de pestañas que muestren contenido diferente, usando componentes dinámicos con la etiqueta <component> . Hace poco me enteré de la API de Composición y quería probarla, pero me está dando algunos problemas.

Aplicación.vue:

 <template> <page-header :tabs="allTabs" @change-tab="changeTab"></page-header> <component :is="activeTab"></component> </template> <script setup> import { ref, reactive } from "vue"; import PageHeader from "./components/PageHeader.vue"; import MainTab from "./components/views/MainTab.vue"; import ChartTab from "./components/views/ChartTab.vue"; import FeedbackTab from "./components/views/FeedbackTab.vue"; const dummyArr = [MainTab, ChartTab, FeedbackTab]; const activeTab = ref("main-tab"); const allTabs = [ { name: "main", selected: true }, { name: "chart", selected: false }, { name: "feedback", selected: false } ]; function changeTab(selection) { let currTab = allTabs.findIndex((tab) => tab.selected === true), nextTab = allTabs.findIndex((tab) => tab.name === selection); allTabs[currTab].selected = false; allTabs[nextTab].selected = true; activeTab.value = `${selection}-tab`; } </script>

dummyArr es simplemente para evitar que el compilador me grite por no usar MainTab o cualquiera de los otros. Además, changeTab devuelve el name de la selección de la barra de navegación de allTabs

Cada uno de los componentes importados se parece a esto, con fines de prueba:

 <template> <h1> Main Tab </h1> </template>

Mi problema es que cuando cargo mi servidor de desarrollo, el encabezado (y la barra de navegación interna) se muestran bien y no hay errores, pero ninguno de los componentes se muestra en la página. He estado encontrando mucha información en línea sobre componentes dinámicos y mecanografiados, pero no agregan ninguna aclaración a mi problema. (Tampoco uso texto mecanografiado, por lo que confunde aún más las cosas...)

¿Qué está causando que mis componentes no se carguen dinámicamente en la página?

about 4 years ago · Juan Pablo Isaza
1 Respostas
Responde à pergunta

0

El componente dinámico debe ser instancias de componentes, no cadenas :

Dado que se hace referencia a los componentes como variables en lugar de registrarlos bajo claves de cadena, deberíamos usar dynamic :is vinculante cuando usamos componentes dinámicos dentro de <script setup> .

Intente convertir dummyArr en un components de objeto que tome el nombre del componente como clave y su instancia como valor:

 const components= {'main':MainTab, 'chart':ChartTab,'feedback': FeedbackTab}; const activeTab = ref(MainTab); const allTabs = [ { name: "main", selected: true }, { name: "chart", selected: false }, { name: "feedback", selected: false } ]; function changeTab(selection) { let currTab = allTabs.findIndex((tab) => tab.selected === true), nextTab = allTabs.findIndex((tab) => tab.name === selection); allTabs[currTab].selected = false; allTabs[nextTab].selected = true; activeTab.value = components[selection];//<-- get the component instance }
about 4 years ago · Juan Pablo Isaza Relatório
Responde à pergunta
Encontrar trabalhos remotos

Descubra a nova forma de encontrar um emprego!

melhores empregos
Principais categorias de trabalho
Empresas
Postar vaga Preços Comercial
Jurídico
Termos e Condições Política de privacidade
© 2026 PeakU Inc. All Rights Reserved.
Andres GPT
Recomende algumas ofertas para mim
Preciso de ajuda