Javascript 使用页面';s查询参数作为页面级查询中的参数

Javascript 使用页面';s查询参数作为页面级查询中的参数,javascript,graphql,gatsby,Javascript,Graphql,Gatsby,在gatsbyJS中,可以指定页面级查询,但从我读过的任何内容来看,将参数传递给gatsby查询的唯一方法是在创建页面时(通过页面上下文) 例如,在创建页面时,会将下面的$slug传递给该页面。是否有其他方法传递$slug(可能通过查询参数值) 我打开这个新页面/search?slug=test,当search加载时我阅读 查询param slug并使用它在graphql查询中进行查询(和 加载页面) 简单的回答是,您不能,因为您位于同一页面(/search),该页面是在构建时使用盖茨比页面查询

在gatsbyJS中,可以指定页面级查询,但从我读过的任何内容来看,将参数传递给gatsby查询的唯一方法是在创建页面时(通过页面上下文)

例如,在创建页面时,会将下面的$slug传递给该页面。是否有其他方法传递$slug(可能通过查询参数值)

我打开这个新页面/search?slug=test,当search加载时我阅读 查询param slug并使用它在graphql查询中进行查询(和 加载页面)

简单的回答是,您不能,因为您位于同一页面(
/search
),该页面是在构建时使用盖茨比页面查询创建和填充的,因此您无法使用来自URL参数的动态内容更改“静态”查询


但是,您可以使用普通JavaScript获取URL参数,并使用动态过滤器更改页面查询的结果,并在
/search
页面中显示您希望的结果。

您能否澄清这一部分:“是否有其他方法传递$slug(可能通过查询参数值)。”?@FerranBuireu我打开这个新页面/search?slug=test,当search加载时,我读取query param
slug
,并使用它在graphql查询中进行查询(并加载页面)。谢谢@FerranBuireu的回答。当你说“动态过滤器改变页面查询结果”时,你能举一些例子吗?你的意思是获取所有数据。然后在显示之前根据查询参数进行过滤?我最近回答了一个类似的问题,解决方法可能适合您:总结,我的意思是,获取所有数据,并使用
过滤器
循环在显示之前获取所需数据
export const query = graphql`
  query($slug: String) {
    mdx(frontmatter: {slug: { eq: $slug }}) {
      frontmatter {
        title
        author
      }
      body
    }
  }
`;