如何在非基于模板的页面(src/pages的一部分)中将变量传递给GraphQL

如何在非基于模板的页面(src/pages的一部分)中将变量传递给GraphQL,graphql,gatsby,Graphql,Gatsby,虽然我能够在所有基于模板的页面(使用createPage函数)上通过pageContext将变量传递给GraphQL,但我无法传递/修改属于src/page的页面的上下文 考虑一下这个主页:src/pages/index.js //want to pass dynamic value to $today const IndexPage = ( {data, pageContext} ) => { console.log(pageContext); // prints "isCrea

虽然我能够在所有基于模板的页面(使用createPage函数)上通过pageContext将变量传递给GraphQL,但我无法传递/修改属于src/page的页面的上下文

考虑一下这个主页:src/pages/index.js

//want to pass dynamic value to $today
const IndexPage = ( {data, pageContext} ) => {
    console.log(pageContext); // prints "isCreatedByStatefulCreatePages: true"

    return (
    <Layout />
)};

export default IndexPage;


export const Query = graphql`
  offers( where : { day: $today})
  {
    ..fields
  }
`;
//今天要将动态值传递给$
const IndexPage=({data,pageContext})=>{
console.log(pageContext);//打印“isCreatedByStatefulCreatePages:true”
返回(
)};
导出默认索引扩展;
export const Query=graphql`
优惠(其中:{day:$today})
{
…田地
}
`;

要修改自动创建的页面,您需要使用
onCreate页面
节点API。基本上,您可以在修改页面对象时重新创建(删除/创建)页面。只需按照文档中的说明操作即可

我可以在模板下移动此页面,并且可以使用$today变量。所以这个具体的问题就解决了。但是知道src/pages下静态页面的解决方案仍然很好…在页面创建之后调用onCreatePage。虽然这适用于后期处理(如添加/删除斜杠),但对创建页面所需的数据没有帮助。您确实需要重新访问我的答案中的链接:)删除页面,然后通过传递所需的任何数据再次创建页面。如果滚动一个缺口,你甚至会看到一个确切的例子。