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

330
Views
Use axios junto con `nuxt/content` en el método `fetch` de un componente

Estoy creando un sitio estático usando @nuxt/content y estoy tratando de crear algunos componentes que se usarán desde el descuento. Uno de esos componentes necesita llamar a una API externa para recuperar algunos datos que se muestran en el HTML.

Estos son los fragmentos relevantes, que intentan mostrar una tarjeta con información de un repositorio de GitHub:

blog_articulo.md

 In <content-github-repository repo="jgsogo/qt-opengl-cube">this repository</content-github-repository> there is...

contenido/github/Repository.vue

 <template> <span class=""> <a :href="`https://github.com/${repo}`"> <slot>{{ repo }}</slot> </a> <div>{{ info.description }}</div> </span> </template> <script> export default { props: { repo: { type: String, require: true, }, }, data: () => ({ info: null, }), async fetch() { console.log(`Getting data for repo: ${this.repo}`); this.info = (await this.$axios.get(`https://api.github.com/repos/${this.repo}`)).data; }, }; </script>

El error que recibo es Cannot read properties of null (reading 'description') , es como this.info no se completara antes de representar el HTML ... pero se ejecuta, porque obtengo el resultado de console.log. Tal vez no entendí bien los documentos sobre fetch , ¿hay alguna otra forma de lograr este comportamiento?

¡Gracias!

over 4 years ago · Santiago Trujillo
1 answers
Answer question

0

Consulte los documentos aquí . Por lo que parece, Nuxt puede montar el componente antes de que finalice la fetch , por lo que debe protegerse contra la configuración de esos data al acceder a ellos en su componente.

Algo tan simple como lo siguiente debería funcionar:

 <template> <span class=""> <a :href="`https://github.com/${repo}`"> <slot>{{ repo }}</slot> </a> <p v-if="$fetchState.pending">Fetching info...</p> <p v-else-if="$fetchState.error">An error occurred :(</p> <div v-else>{{ info.description }}</div> </span> </template>
over 4 years ago · Santiago Trujillo 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!