Select 动态生成的nuxt页面布局
Select a layout for dynamically generated nuxt page
我正在构建一个项目,其中我的所有数据(包括页面路由)都来自 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 路由器?
一种方法是将数据注入有效负载
https://nuxtjs.org/api/configuration-generate#speeding-up-dynamic-route-generation-with-code-payload-code-
这将允许您将生成信息传递到路由本身。
我正在构建一个项目,其中我的所有数据(包括页面路由)都来自 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 路由器?
一种方法是将数据注入有效负载 https://nuxtjs.org/api/configuration-generate#speeding-up-dynamic-route-generation-with-code-payload-code- 这将允许您将生成信息传递到路由本身。