0
votes

I am populating my Nuxt.js site with data coming from Strapi.

I have my navigation in default.vue layout, simple like:

  <li v-for="page in pages" :key="page.id">
    <nuxt-link :to="page.slug"></nuxt-link>
  </li>

The urls render correctly and try to open the right page, however the page doesn't load as it's not able to load data from Strapi, for example:

Cannot read property 'title' of undefined

If, instead, I land directly on the page or simply refresh it, all the content gets loaded correctly.

So, for example, landing to localhost:3000/about works fine, but navigating to that page doesn't.

I guess there's something I am missing about how the data it's loaded in the first place.

I am querying all the pages in default.vue via Apollo to get the navigation

  apollo: {
    pages: {
      query: pagesQuery
    }
  }

And only the specific page inside index.vue or dynamic pages _slug.vue querying a single one:

  apollo: {
    pages: {
      query: pageQuery,
      variables () {
        return {
          "slug": this.$route.params.slug
        }
      }
    }

Hope it's clear and thanks in advance for your help!

1

1 Answers

0
votes

After finding this similar question, looks like the solutions was to add

 v-if="pages[0] != null"

on the main element, and

  data() {
    return {
      pages: []
    }
  }

this seems to work, but not sure if there are other (better?) ways to handle it, so feel free to reply!

Thanks