我想问问关于 gatsby 和 graphql 的问题,因为我在检索必要的数据时遇到了问题:
1- 如果是动态创建的页面,是否可以在模板中插入 getServerData?从 Gatsby 的文档中,我只在位于 src/pages 的页面中找到与 getServerData 相关的文档。我正在尝试通过 gatsby-node 中的 createPages 上下文将变量传递给 getServerData。
或者:
2- 通过文件系统路由使用动态创建页面,在这种情况下 [...slug] 我想将 slug 变量传递给页面查询,以便能够过滤 allCms 类型的查询。
query CollectionPageQuery($slug: String) {
allCmsPlp(
filter: { parameters: { collection: { seo: { slug: { eq: $slug } } } } }
) {
edges {
node {
parameters {
collection {
seo {
slug
}
brandId
categoryId
generic
clusterId
}
}
sections {
name
data
}
}
}
}
}
在第一种情况下,getServerData 对我不起作用,在第二种情况下,我遇到了构建问题,它告诉我 slug 变量不存在,因此我认为它没有通过。
如果我想要的话,你有什么建议:
谢谢
是的,在动态创建页面的情况下,可以在模板中插入 getServerData。
无论您在 gatsby-node.js 中作为上下文传递什么,都将在 getServerData 中显示为 props.pageContext。
导出异步函数 getServerData(props) { console.log(props.pageContext) }