GetServerData in template(Gatsby 获取数据问题)

问题描述 投票:0回答:1

我想问问关于 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 与 SSR 查询

谢谢

reactjs graphql gatsby server-side-rendering
1个回答
0
投票
  1. 是的,在动态创建页面的情况下,可以在模板中插入 getServerData。

  2. 无论您在 gatsby-node.js 中作为上下文传递什么,都将在 getServerData 中显示为 props.pageContext。

    导出异步函数 getServerData(props) { console.log(props.pageContext) }

© www.soinside.com 2019 - 2024. All rights reserved.