开发者问题收集

× TypeError:无法读取未定义的属性(读取‘map’)

2021-09-06
758555

当我尝试运行此代码时,它给出了此错误:

× TypeError: Cannot read properties of undefined (reading 'map')

为什么会发生这种情况?我该如何让它正常工作?

import React from 'react';
import Grid from '@material-ui/core/Grid';

import Product from './Product/Product';
import useStyles from './styles';

const products = [
  {id: 1, name: 'Shoes', description: 'Running Shoes.' },
  {id: 2, name: 'MacBook', description: 'Apple MacBook.' },
];

const Products = ({ products }) => {
  const classes = useStyles();

  return (
    <main className={classes.content}>
      <div className={classes.toolbar} />
      <Grid container justify="center" spacing={4}>
        {products.map((products) => (
          <Grid item key={product.id} item xs={12} sm={6} md={4} lg={3}>
            <Product />
          </Grid>
        ))};
      </Grid>
    </main>
  );
};

export default Products;
3个回答

我遇到了同样的错误,并通过首先询问数组是否存在解决了该错误。

示例:

<Filter>
  { product.color?.map((c) => (
    <FilterColor color = {c} key = {c} />
  ))};
</Filter>
jake
2021-11-17

您的组件中有一个属性“products”。该变量的优先级高于您外部的映射,并且您的 .map 正在使用它。我建议重命名其中一个,以避免使用同名变量。

鉴于错误,我猜测该属性未传递给组件。

此外,map lambda 的参数也是“products”。将其更改为“product”,否则将失败。

Iván
2021-09-06

您获取了一个空白数组[]。因此,您面临此错误。您可以通过两种方式解决此问题:

{products && products.map((product) => (
    <Grid item key={product.id} item xs={12} sm={6} md={4} lg={3}>
        <Product/>
    </Grid>
))};

{products?.map((product) => (
    <Grid item key={product.id} item xs={12} sm={6} md={4} lg={3}>
        <Product/>
    </Grid>
))};
Md. Shafiqul Islam
2022-06-25