首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Gatsby-image TypeError:未定义的不是对象

Gatsby-image TypeError:未定义的不是对象
EN

Stack Overflow用户
提问于 2019-02-11 03:11:38
回答 1查看 855关注 0票数 0

当尝试在我的header.js中使用gatsby-image时,我得到了以下错误。

TypeError:未定义不是对象(计算“”props.data.flower“”)

请参阅下面的header.js代码。

代码语言:javascript
复制
import { Link } from "gatsby";
import PropTypes from "prop-types";
import React from "react";
import { graphql } from "gatsby";
import Img from "gatsby-image";

import bklogo from "../images/bk-logo-01.svg";

const Header = props => (
  <nav className="bg-cover-image bg-repeat">
    <div className="text-center sm:w-full relative pin">
      <Img
        fluid={props.data.flower.childImageSharp.fluid}
        class="block mx-auto w-5/6 md:w-1/2"
        alt="Brooke & Kyle"
      />
    </div>

    <div className="flex flex-wrap items-center justify-center max-w-3xl mx-auto px-8 py-0 md:px-8 md:py-3">
      <Link
        to="/"
        className="flex items-center no-underline py-5 text-white w-1/2 sm:w-1/3 md:w-1/6"
      >
        <img src={bklogo} className="" alt="Brook & Kyle Logo" />
      </Link>
    </div>
  </nav>
);

Header.propTypes = {
  siteTitle: PropTypes.string
};

Header.defaultProps = {
  siteTitle: ``
};

export default Header;

export const pageQuery = graphql`
  query {
    flower: file(relativePath: { eq: "flower-top.png" }) {
      childImageSharp {
        fluid(maxWidth: 1000) {
          ...GatsbyImageSharpFluid
        }
      }
    }
  }
`;

我让gatsby-image在我的index.js中工作得很好。只是header.js出了点问题。

谢谢你的帮助。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2019-02-11 03:53:08

在非页面组件(不在src/pages/目录中的组件)中,导出的graphql查询将被忽略。您将不得不使用gatsby的StaticQuery

例如:

代码语言:javascript
复制
import { StaticQuery, graphql } from 'gatsby'

const Header = () => (
  <StaticQuery
    query={graphql`
      query {
        flower: file(relativePath: { eq: "flower-top.png" }) {
          childImageSharp {
            fluid(maxWidth: 1000) {
              ...GatsbyImageSharpFluid
            }
          }
        }
      }
    `}
    render={data => <Img fluid={data.flower.childImageSharp.fluid} />}
  />
)
票数 3
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/54620004

复制
相关文章

相似问题

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