Empresas
Empleos
  • Sobre nosotros
  • Soluciones
    • Publicación de vacantes
      Publica tu vacante y recibe candidatos calificados en 48h.
    • Evaluación de candidatos
      500+ pruebas técnicas y psicológicas, más anti-fraude.
    • Headhunting
      Búsqueda ejecutiva a la medida de principio a fin.
    • Nómina + EOR
      Dispersión de nómina y EOR en más de 15 países de LATAM.
  • Precios
  • Empleos

0

143
Vistas
Carga de componentes de Vue antes de configurar los datos de Vuex

Tengo un componente Vue2 que se basa en Vuex para recuperar el nodo seleccionado actualmente (infoNode) para mostrar los datos de ese nodo al usuario. Tengo una función beforeCreate que usa Axios para recuperar los nodos de nivel superior y establecer el 'infoNode' como el primer nodo, como se muestra a continuación:

 async beforeCreate(){ const info = await axios.get('/ajax/company-info') if(info.data){ this.$store.dispatch("setCompanyInfo", info.data) } // Function to retrieve top level node const topLevel = await axios.get('/ajax/get-root-contents') if(topLevel.data){ this.$store.dispatch("loadTopLevel", topLevel.data) } },

A continuación se muestra la función Vuex para configurar el infoNode

 loadTopLevel(state,node){ state.infoNode = node },

Aquí es donde trato de obtener los datos de infoNode y mostrar un ícono de una matriz de íconos válidos

 <v-icon size="6em" v-if="fileIcons[infoNode.data.filetype]">{{ fileIcons[infoNode.data.filetype] }}</v-icon>

Ahora, en mi componente, tengo un accesorio computarizado que recupera este infoNode de la tienda para mostrarlo. El problema que tengo es que la interfaz arroja un error que indica que 'e.infoNode.Data' no está definido'.

Este error se lanza antes de que se complete la solicitud. Una vez que se completa la solicitud, la interfaz muestra con éxito el infoNode ya que la tienda se actualiza.

¿Hay alguna forma de que configure estos datos en la tienda antes de que el componente intente obtenerlos? Probé muchas variaciones de beforeCreate (async y non), así como también creado/montado.

about 4 years ago · Juan Pablo Isaza
1 Respuestas
Responde la pregunta

0

En su caso, beforeCreate() es asíncrono, por lo que el componente se procesa antes de configurar los datos para almacenar. Está mostrando v-icon si fileIcons tiene una entrada específica ( infoNode.data.filetype ), pero en ese momento infoNode no está undefined o infoNode.data no está definido.

En v-if , debe verificar si infoNode no está indefinido y tiene la entrada que está buscando.

Algo como esto:

 computed: { hasEntry() { if(infoNode && ('data' in infoNode)) return true return false } } //template <v-icon size="6em" v-if="hasEntry">{{ fileIcons[infoNode.data.filetype] }}</v-icon>
about 4 years ago · Juan Pablo Isaza Denunciar
Responde la pregunta
Encuentra empleos remotos

¡Descubre la nueva forma de encontrar empleo!

Top de empleos
Top categorías de empleo
Empresas
Publicar vacante Precios Comercial
Legal
Términos y condiciones Política de privacidad
© 2026 PeakU Inc. All Rights Reserved.
Andres GPT
Recomiéndame algunas ofertas
Necesito ayuda