javascript - TypeError:无法读取未定义的属性(读取“客户”)
问题描述
import React, { useState, useEffect } from 'react';
import axios from 'axios';
{const CustomerList = () => {
const [information, setInformation] = useState([]);
const [isLoading, setIsLoading] = useState(true);
useEffect(() => {
if (isLoading) {
axios.get('').then((response) => {
setInformation((prevInfo) => {
return [...prevInfo, response.data];
});
});
}
return () => {
setIsLoading(false);
};
}, [information, isLoading]);
return (
<>
<h2>Name: </h2>
{information.map((item, index) => (
<div>
<div>{item[index].customer.firstName}</div>
<div>{item[index].customer.lastName}</div>
</div>
))}
</>
);
};
export default CustomerList;
- 我正在使用 axios 和 useeffect 从 api 获取数据以进行工作
- 我通过数据的响应数组进行映射,如果数组中没有信息,则应用程序中断
- 如何仅映射数组中特定数量的项目?
- 例如,如果我的数据数组中有 3 个项目,它会在浏览器上从返回语句向下显示它们...当它映射所有 3 个项目时,它将继续重试并中断,因此“客户未定义”因为那里不再有客户 5.我尝试做 {item.customer.firstName 并得到未定义名字的错误}
有什么办法可以解决这个问题?谢谢!
解决方案
这不是如何map
工作的。使用回调的这些参数:
information.map((item, index) => ...
index
是迭代information
数组时的当前索引,并且item
是该索引处的元素。它不是整个数组的另一个副本。所以代替这个:
item[index].customer.firstName
你只需这样做:
item.customer.firstName
顺便说一句,在 React 中迭代数组以输出列表时,您可能希望将 a 添加key
到顶级元素。如果您愿意,您可以index
用于此目的:
{information.map((item, index) => (
<div key={index}>
...
</div>
))}
或者,如果item
有一个唯一标识符,那么您可以使用它并index
完全删除。
推荐阅读
- ubuntu - 如何在 OpenSSL 包中修复 Ubuntu 服务器上的 AttributeError?
- javascript - 电子邮件地址验证器
- scikit-learn - 在尝试在 Jupiter notebook 和 PYCHARM 中导入 sklearn 模块时,我不断收到以下错误
- angularjs - 输入字段搜索时的智能表重置/刷新不会加载原始数据
- outlook - 深层链接和 Outlook 安全链接保护
- mongodb - 如何在 Apollo 解析器(Meteor/Apollo/Graphql)中返回聚合查询?
- javascript - JQuery:一旦元素出现,使用 ClearInterval 停止刷新
- html - 如何在html中进行高级文本调整?
- node.js - Firebase 云函数增量计数器
- c# - C# MongoDB 按计算排序