开发者问题收集

未捕获的类型错误:无法读取未定义的属性(读取“数据”)

2023-06-12
6870

我使用 Stripe 进行 Api 集成。 我正在使用主页 API 集成 我在类别部分使用映射循环 我收到此错误 我期待主页 API 集成 我不断收到错误 Uncaught TypeError:无法读取未定义的属性(读取“数据”)

import "./Category.scss";

import cat1 from "../../../assets/category/Hoodies.jpg";

const Category = ({ categories }) => {
  return (
    <div className='shop-by-category'>
      <div className='categories'>
        {categories.data.map((item) => (
          <div key={item.id} className='category'>
            <img src={cat1} alt='' />
          </div>
        ))}
      </div>
    </div>
  );
};

export default Category;
2个回答
  1. categories 属性未从父组件正确传递。确保 categories 属性按预期传递,并且不为 null 或未定义。

  2. categories 属性正在异步获取,在首次呈现 Category 组件时可能不可用。在尝试访问其数据属性之前,请考虑添加检查以查看 categories 是否为 null 或未定义

import "./Category.scss";
import cat1 from "../../../assets/category/Hoodies.jpg";

const Category = ({ categories }) => {
  if (!categories) {
    return null; // or a loading spinner or error message
  }

  return (
    <div className='shop-by-category'>
      <div className='categories'>
        {categories.data.map((item) => (
          <div key={item.id} className='category'>
            <img src={cat1} alt='' />
          </div>
        ))}
      </div>
    </div>
  );
};

export default Category;
Nafis
2023-06-12

在从服务器接收数据之前,categories 变量未定义,导致此错误。要解决此问题,您应该在代码中检查“categories”。

以下是修改后的代码:

const Category = ({ categories }) => {
  return (
    <div className='shop-by-category'>
      <div className='categories'>
        {categories?.data.map((item) => (
          <div key={item.id} className='category'>
            <img src={cat1} alt='' />
          </div>
        ))}
      </div>
    </div>
  );
};

export default Category;
Mehran
2023-06-12