代码之家  ›  专栏  ›  技术社区  ›  Ângelo Rigo

ReactJS映射:如何迭代[关闭]

  •  -3
  • Ângelo Rigo  · 技术社区  · 3 月前

    我是ReactJS的新手,目前我收到了错误消息:

    无法读取undefined的属性(读取“map”)

    错误发生在以下行:

    let { itens } = data;
    

    当我尝试使用映射迭代到下面的响应中时:

    {
        "data": [       
            {
                "id": "1234",
                "name": "Adm",
                "date": "2020-01-14 00:00:00.000",
                "value": "4444.00"            
            }       
        ]
    }
    

    我尝试使用map,但它给了我错误:无法读取undefined的属性(读取“map”)

    或者如何将json格式更改为:

    {
        "data": {       
            {
                "id": "1234",
                "name": "Adm",
                "date": "2020-01-14 00:00:00.000",
                "value": "4444.00"            
            }       
        }
    }
    

    因为应用程序中的其他示例都是这种格式的,所以我只是从另一个工作示例中复制并粘贴。

    1 回复  |  直到 3 月前
        1
  •  1
  •   Amisha Singla    3 月前

    当您尝试对未定义或null值调用map函数时,通常会出现错误“无法读取undefined的属性(读取'map')”。这通常发生在您试图访问尚未加载或格式不符合预期的数据时。

    对于您的第一个JSON格式:

    {
    "data": [       
        {
            "id": "1234",
            "name": "Adm",
            "date": "2020-01-14 00:00:00.000",
            "value": "4444.00"            
        }       
    ]
    

    }

    **你可以像这样迭代它: **

    import React from 'react'
    function MyComponent({ response }) { return (
    <div>
      {response && response.data && response.data.map((item) => (
        <div key={item.id}>
          <p>ID: {item.id}</p>
          <p>Name: {item.name}</p>
          <p>Date: {item.date}</p>
          <p>Value: {item.value}</p>
        </div>
      ))}
    </div>
      );
    

    } 对于您提到的第二种JSON格式: 这不是有效的JSON。如果你想在数据中有一个对象,它应该看起来像这样:

    {
        "data": {
            "id": "1234",
            "name": "Adm",
            "date": "2020-01-14 00:00:00.000",
            "value": "4444.00"            
        }
    }
    

    你可以这样访问它:

    import React from 'react';
    
    function MyComponent({ response }) {
      return (
        <div>
          {response && response.data && (
            <div>
              <p>ID: {response.data.id}</p>
              <p>Name: {response.data.name}</p>
              <p>Date: {response.data.date}</p>
              <p>Value: {response.data.value}</p>
            </div>
          )}
        </div>
      );
    }

    在这种情况下,您不需要使用map,因为数据是单个对象,而不是数组。

    在尝试访问数据的属性或方法之前,请务必检查数据是否存在,以避免此类错误。