Выберите макет для динамически генерируемой пустой страницы - PullRequest
0 голосов
/ 19 ноября 2018

Я строю проект, в котором все мои данные - включая маршруты страниц - поступают из конечной точки GraphQL, но должны размещаться на статическом сайте (я знаю, я знаю. Не начинайте).

Мне удалось статически сформировать маршруты из данных, используя следующий код в nuxt.config.js:

 generate: {
    routes: () => {
      const uri = 'http://localhost:4000/graphql'
      const apolloFetch = createApolloFetch({ uri })
      const query = `
          query Pages {
           pages {
            slug
            template
            pageContent {
             replaced
             components {
              componentName
              classes
             body
            }
          }
        }
      }
      `

      return apolloFetch({ query }) // all apolloFetch arguments are optional
        .then(result => {
          const { data } = result
          return data.pages.map(page => page.slug)
        })
        .catch(error => {
          console.log('got error')
          console.log(error)
        })
    }
  }

Проблема, которую я пытаюсь решить, состоит в том, что некоторые страницы должны использовать макет, отличающийся от стандартного, правильная компоновка указывается в данных GraphQL как page.template, но я не вижу способа передать это информация к роутеру.

Я пытался изменить return data.pages.map(page => page.slug) на:

  return data.pages.map(page => {
     route: page.slug,
     layout: page.template
    })

но это, кажется, не стартер. Кто-нибудь знает, как передать предпочтение макета маршрутизатору vue?

1 Ответ

0 голосов
/ 24 мая 2019

Один из способов - ввести данные в полезную нагрузку. https://nuxtjs.org/api/configuration-generate#speeding-up-dynamic-route-generation-with-code-payload-code-. Это позволит вам передавать генерируемую информацию в сам маршрут.

...