我正在Gatsby博客中制作一个可重用的组件,以转到博客文章的末尾,该文章采用文章的authorName,并呈现“关于作者”部分,从存储在网站其他地方的作者的个人资料中提取信息。

我已经制作了当authorName硬编码为字符串时可以工作的组件,但是我仍然坚持如何从文章组件(作为props.author传递)中将作者名获取到GraphQl查询中。

我可以确认:
1.正确编写道具作者,并且控制台记录正确
2.根据硬编码的字符串作者姓名,从团队的BIOS中提取了正确的生物学信息和个人资料图片。


  缺少的链接是用props.author替换硬编码的作者姓名字符串。


在此先感谢您的帮助;我已经审查了类似的问题,但找不到答案。

这是我的组件:

AboutAuthor.js

import React from "react";
import { StaticQuery, graphql } from "gatsby";
import Img from "gatsby-image";

export default (props) => (
  <div>
    <StaticQuery
      query={graphql`
        query {
          copy: markdownRemark(
            frontmatter: { name: { eq: "need to replace this string with props.author" } }
          ) {
            html
            frontmatter {
              name
              profileImage {
              childImageSharp {
                fluid(maxWidth: 800) {
                  ...GatsbyImageSharpFluid
                }
              }
            }
            }
          }
        }
      `}

      render={data => (
        <React.Fragment>
          <p>Testing Name: {props.author}</p> // testing the author name is passed ok, will be removed
          <Img
            fluid={data.copy.frontmatter.profileImage.childImageSharp.fluid}
            alt=""
          />
          <div>
            <span>
              {data.copy.frontmatter.name}
            </span>
            <div
              dangerouslySetInnerHTML={{ __html: data.copy.html }}
            />
          </div>
        </React.Fragment>
      )}
    />
  </div>
);

最佳答案

查看How StaticQuery differs from page query的文档


  StaticQuery可以执行页面查询可以执行的大多数操作,包括片段。主要区别在于:
  
  
  页面查询可以接受变量(通过pageContext),但只能添加到页面组件中
  StaticQuery不接受变量(因此名称为“ static”),但可以在任何组件(包括页面)中使用
  StaticQuery不适用于原始React.createElement调用;请使用JSX,例如<StaticQuery />

09-25 10:44