graphql - 在 Gatsby 上渲染 Contentful Reference (many)

我对使用 Contentful 及其引用(许多)字段类型还很陌生。我有一种引用类型,它包含许多产品名称。在 GraphQL 中,我可以看到我所有的产品名称都在显示,但是当我尝试在 Gatsby 上渲染它时,我没有看到任何显示(产品名称:数组)。这是我的 GraphQL

{
  allContentfulAppetizerMenuSection {
      nodes {
        menuItemReferences {
          productName
        }
      }
  }
}

这是我的代码...

import React from 'react';
import { graphql, StaticQuery } from 'gatsby';

const Products = () => (

  <StaticQuery
  query={graphql`
    query MyQuery {
        allContentfulAppetizerMenuSection {
            nodes {
              menuItemReferences {
                productName
              }
            }
        }
    }
  `}

  render={data => (
    <div>
        {data.allContentfulAppetizerMenuSection.nodes.map(({ menuItemReferences }, i) => (
        <div key={i}>
            {menuItemReferences.productName}
        </div>
      ))}
    </div>
    )}
  />
)
  
export default Products;

任何帮助将不胜感激。

最佳答案

尝试:

const Products = () => {
  const data = useStaticQuery(graphql`
      query {
          allContentfulAppetizerMenuSection {
              nodes {
                  menuItemReferences {
                      productName
                  }
              }
          }
      }
  `);

  return <div>
    {data.allContentfulAppetizerMenuSection.nodes.map(({ menuItemReferences }, i) => {
      return <div key={i}>
        {menuItemReferences.productName}
      </div>;
    })}
  </div>;
};

export default Products;

注意 useStaticQuery 的用法钩子(Hook)和循环中的 return 语句。

useStaticQuery 的重构产生了更清晰和可重用的代码,但它的想法完全相同,如果您更熟悉旧的 StaticQuery,则可以保留它。

如果错误仍然存​​在,请尝试在循环内进行调试。

关于graphql - 在 Gatsby 上渲染 Contentful Reference (many) 数组,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/64490137/

相关文章:

java - 对于 IntelliJ 中的 Java 项目,Run 命令究竟做了什么?从 ./mvn

spring-boot - 线程 "main"java.lang.NoSuchMethodError

c# - 自动展开PropertyGrid中的一些属性

python - pygame双显示器和全屏

reactjs - 如何使用代理将 Flask API 和 React 前端微服务部署到 Googl

django - 如何使用 Django Rest Framework 将上传进度条与 s3 存储桶

python - 异常值处理部分零值过多怎么办?

c# - 如何在不同的范围内获取同一服务接口(interface)的多个实现

f# - 如何使用 FSharp.Compiler.Service 从 F# 字符串中获取 F# A

google-sheets - 如何让条形图数据标签在谷歌表格中显示值和百分比(总数)?