首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >在React组件GraphQL查询中使用GraphQL上下文变量

在React组件GraphQL查询中使用GraphQL上下文变量
EN

Stack Overflow用户
提问于 2019-07-25 19:47:38
回答 1查看 638关注 0票数 0

我正试图在我的React组件中构造一个GraphQL查询,我需要限制返回的结果数量。我在gatsby-node.js文件中的"createPage“函数的"context”属性中设置了限制值。

在我的React组件中,我可以看到limit属性是通过"props.pageContext.limit“传入的。我需要获取这个限制值,并将其传递给React组件底部的GraphQL查询

下面是我尝试过的方法,但它不起作用,如果我在查询中省略了limit值,那么它将返回所有结果。

代码语言:javascript
复制
//gatsby-node.js
...    
    const postsPerPage = 3;
    createPage({
      path: node.fields.slug,
      component: path.resolve("./src/templates/page.js"),
      context: { 
                 limit: postsPerPage,
                 slug: node.fields.slug,
                 category: node.frontmatter.category
               }  
      });
...


//my-component.js
...
    export const query = graphql`
        query($limit: Int!, $slug: String!) {
          markdownRemark(fields: { slug: { eq: $slug } }) {
            html
            frontmatter {
              category
            }
          }
          allMarkdownRemark(limit: $limit) {
            edges {
              node {
                frontmatter {
                  title
                  excerpt
                }
                fields {
                    slug
                }
              }
            }
          }
        }
      `
EN

回答 1

Stack Overflow用户

发布于 2019-07-27 15:14:53

仅当从页面模板组件中导出GraphQL查询时,才会使用指定的参数自动执行这些查询。在您的示例中,如果该查询存在于./src/templates/page.js中,则将执行该查询。然后,您可以通过props将数据传递给子组件。

您的查询当前被忽略,因为Gatsby不会自动在非页面组件中执行查询。您可以使用StaticQuery组件或useStaticQuery挂钩来查询子组件中的数据。但是,顾名思义,这些都是静态查询,不接受任何参数。

如果您真的希望在子组件中描述查询,您还可以查看Fragments,这是一种将大型查询划分为多个可重用部分的方法。

有用的链接:

useStaticQuery hook

StaticQuery component

Query Fragments

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/57201278

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档