如何在 Gatsby 中的特定页面模板上设置值

How to set a value on a specific page template in Gatsby

Gatsby 的新手,无法解决这个问题。我创建了一个新页面,我想在该页面上更改徽标模板文件中使用的值。在第 'my-mobile-app.js' 页上,我需要使用 'pulse' 徽标。我将它添加到下面的导出默认值中,但如何从特定页面调用它?将 dark={true} 添加到 <Img> 会按预期在全局范围内更改它。如果不清楚,请告诉我。

这是页面结构:

最好导出命名组件(可以是默认的),例如:

 export default function Logo ({ white, dark, pulse, ...props }) => {
      const logo = useStaticQuery(graphql`
          query {
              white: file(relativePath: { eq: "logo/Logo-whitebg.png" }) {
                  childImageSharp {
                      fluid {
                          ...GatsbyImageSharpFluid_noBase64
                      }
                  }
              }
              dark: file(relativePath: { eq: "logo/Logo-darkbg.png" }) {
                  childImageSharp {
                      fluid {
                          ...GatsbyImageSharpFluid_noBase64
                      }
                  }
              }
              pulse: file(relativePath: { eq: "logo/Logo-pulse.svg" }) {
                  childImageSharp {
                      fluid {
                          ...GatsbyImageSharpFluid_noBase64
                      }
                  }
              }
          }
      `)
  }
  const typeLogo = (white && 'white') || (dark && 'dark') || (pulse && 'pulse') || "white"
  return <Link to="/">
      <Img
          fluid={logo[typeLogo].childImageSharp.fluid}
          alt="Tradovate Logo"
          {...props}
          loading="eager"
          fadeIn={false}
      />
  </Link>

那么无论你想去哪里,你只需要:

import Logo from '../path/to/your/brand/new/component'

<Logo white />

相应地更改 whitedark。我认为如果你创建一个像 isWhiteisDark 这样的布尔值并将其设置为默认值 truefalse 会更清楚,无论你喜欢什么:

export default function Logo ({ isWhite=false, pulse, ...props }) => {}

这样一来,您就不需要始终传递 <Logo isWhite={false} />,因为它已设置为默认值 false。如果你像 <Logo isWhite={true} /> 一样传递它,将覆盖默认配置。