Business
Jobs
  • About Us
  • Solutions
    • Job Postings
      Post your job and receive qualified candidates in 48h.
    • Candidate Assessments
      500+ technical and psychological tests, plus anti-fraud.
    • Headhunting
      Tailor-made executive search from start to finish.
    • Payroll + EOR
      Payroll dispersal and EOR across 15+ LATAM countries.
  • Pricing
  • Jobs

0

149
Views
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 answers
Answer question

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 Report
Answer question
Find remote jobs

Discover the new way to find a job!

Top jobs
Top job categories
Business
Post vacancy Pricing Sales
Legal
Terms and conditions Privacy policy
© 2026 PeakU Inc. All Rights Reserved.
Andres GPT
Show me some job opportunities
There's an error!