reactjs - 无法从 gatsby-config.js 多个查询 GrahQL 读取 siteMetadata 对象 - Gatsby ReactJS

标签 reactjs graphql gatsby

我正在尝试使用 GraphQL 一次从多个查询中读取我在 gatsby-config.js 文件中定义的 siteMetadata 对象的内容。 我有这个错误:

error  'siteMetadata' is not defined  no-undef

我的JS文件

export const pageQuery = graphql`
  query($slug: String!) {
    markdownRemark(frontmatter: { slug: { eq: $slug } }) {
      html
      frontmatter {
        date(formatString: "MMMM DD, YYYY")
        slug
        title
        logo
        about
        language
      }
    }

    site {
        siteMetadata {
          title
          description
          author
        }
      }
  } 
`

我打电话

{siteMetadata.title}

最佳答案

在您的 gatsby-config.js 中,您应该有一个名为 siteMetadata 的对象,其结构与您查询的结构相同:

module.exports = {
      siteMetadata: {
        title: `Some title`,
        description: `Some description`,
        author: `Some author`,
      },
  plugins: [...]
}

然后,在您的页面上,您必须访问 data 变量,它存储所有查询的信息。

export const YourPage= ({ data }) => {
  const yourTitle = data.site.siteMetadata.title;
  return ...
}

问题是您直接访问尚未定义的 siteMetadata,您的信息存储在 props.data.site.siteMetadata 内,解构 data 作为 prop,它可以为您节省一步。

关于reactjs - 无法从 gatsby-config.js 多个查询 GrahQL 读取 siteMetadata 对象 - Gatsby ReactJS,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/62345262/

相关文章:

javascript - react 路由中的错误404

reactjs - 在reactjs中添加内联样式而不使用JSX

javascript - 如何使用node.js GOT http请求库进行故障排除?

graphql - 如何使用 sequelize-typescript 通过自定义 Apollo GraphQL 解析器查询相关对象?

gatsby - Netlify 部署抛出 : Error: Invalid version: “1”

javascript - Gatsby "Creating Pages from Data Programatically"不起作用

javascript - 在 react 中禁用 react 路由器链接

reactjs - React Navigation - 自定义标题动画

javascript - 在 graphql 的解析器中获取用户代理访问权限

reactjs - 可下载文件 - Gatsby