当前位置: 首页 > 知识库问答 >
问题:

Gatsby错误无法读取null的属性“fixed”

申屠洛华
2023-03-14

我想在索引页的菜单部分显示我的产品。我试图从contentful API显示文本和图像等内容,但我得到了这个错误:

TypeError:无法读取null的属性“fixed”
src/components/homepageComponents/Product.js:6
3从“../../utils”导入{styles}
4从“gatsby-image”导入Img
5
6导出默认函数Product({Product}){
7 const{name,price,appriguitions}=Product
8 const{fixed}=Product.Img

这是我的product.js

import React from "react"
import styled from "styled-components"
import { styles } from "../../utils"
import Img from "gatsby-image"

export default function Product({ product }) {
  const { name, price, ingredients } = product
  const { fixed } = product.img

  return (
    <ProductWrapper>
      <Img fixed={fixed} className="img" />
      <div className="text">
        <div className="product-content">
          <h3 className="name">{name}</h3>
          <h3 className="price">{price}</h3>
        </div>
        <p className="info">{ingredients}</p>
      </div>
    </ProductWrapper>
  )
}

const ProductWrapper = styled.div`
  @media (min-width: 576px) {
    display: grid;
    grid-template-columns: auto 1fr;
    grid-column-gap: 1rem;
  }
  .img {
    border-radius: 0.5rem;
  }
  .product-content {
    display: flex;
    justify-content: space-between;
    font-size: 1.4rem;
    text-transform: uppercase;
  }
  .name {
    color: ${styles.colors.mainYellow};
    margin-top: 0.5rem;
  }
  .price {
    color: ${styles.colors.mainYellow};
    margin-top: 0.5rem;
  }
  .info {
    margin-top: 0.5rem;
    word-spacing: 0.2rem;
    text-transform: lowercase;
  }
`

这是我的菜单。js

import React from "react"
import Product from "./Product"
import { StaticQuery, graphql } from "gatsby"
import { Section, Title } from "../../utils"
import styled from "styled-components"
// import { Link } from "gatsby"

export default function Menu() {
  return (
    <Section>
      <Title title="Featured items" message="Little taste" />
      <ProductList>
        <StaticQuery
          query={graphql`
            {
              items: allContentfulMenu {
                edges {
                  node {
                    name
                    price
                    id
                    ingredients
                    img {
                      fixed(width: 150, height: 150) {
                        ...GatsbyContentfulFixed_tracedSVG
                      }
                    }
                  }
                }
              }
            }
          `}
          render={data => {
            return data.items.edges.map(item => {
              return <Product key={item.node.id} product={item.node} />
            })
          }}
        />
      </ProductList>
    </Section>
  )
}

const ProductList = styled.div`
  margin: 3rem 0;
  display: grid;
  grid-template-columns: 100%;
  grid-row-gap: 3rem;
  @media (min-width: 576px) {
    grid-template-columns: 95%;
  }
  @media (min-width: 776px) {
    grid-template-columns: 80%;
    justify-content: center;
  }
  @media (min-width: 992px) {
    grid-template-columns: 1fr 1fr;
    grid-gap: 2rem;
  }
`

共有1个答案

阎知
2023-03-14

在本例中,product中的img属性没有任何fixed属性。特别是,img为null,您将其视为对象。在对img进行析构之前,您可能必须检查它是否实际上是一个对象

 类似资料:
  • 问题内容: 您好,我正在尝试将React-Router与Firebase配合使用。但这给了我这个错误。 无法读取null的属性“ props” 这正是代码,我正在使用我的react-router 向下代码在组件上作为loginpanel组件。 我的react路由器在main.jsx上声明,我的react-router看起来像这样。 问题答案: 在回调中,指针不再指向您的React组件。有很多方法可

  • 我收到以下JavaScript错误: TypeError:无法读取null的属性“title” 代码如下: mds-iMac: cmscart imac$nodemo app[nodemo] 1.11.0[nodemo]随时重启,输入[nodemo]观看:.[nodemo]启动(node: 2274)DeprecationWarning:在猫鼬中被弃用 [nodemon]应用程序崩溃-正在等待文件

  • 我在我的Gatsby应用程序中得到了这个错误,该应用程序为作者提取places数据。当author.social的map()点为null时,该错误将显示 谢谢

  • 我正在使用Selenium进行iOS移动应用测试。我在使用相应的 我正在使用一个shell脚本来帮助我检查ios\u webkit\u debug\u代理是否可用。如果不存在,它将在2秒内启动ios\u webkit\u debug\u代理。 我的测试很顺利。但在appium中仍然面临一些问题,appium被停止肯定会给出一个 我试着用各种方法来解决这个问题。 重新启动Appium并再次运行。 但

  • React-Native: 0.57.1 react-nady-cli: 2.0.1节点: v8.11.3 npm: 5.6.0 巴别塔版本详情: “devDependencies”:“@babel/runtime”:“^7.0.0”,“babel jest”:“20.0.3”,“babel preset react native”:“^2.1.0”,“jest”:“20.0.4”,“react

  • 我正在使用gatsby的“gatsby source prismic graphql”插件将我的prismic repo与一个组件连接起来,并将博客帖子数据显示为一张卡片。该查询在GraphiQL中运行良好,但当我将GraphQL查询实现到组件中时,Gatsby无法识别查询中的“Prismic”。 我尝试过显示其他数据,如站点元数据,这是没有问题的 以下是Git回购协议:https://githu