我正在尝试使用react useEffect挂钩从https://randomuser.me/api/获取数据。代替要显示的数据,我收到一个错误,“错误:对象作为React子对象无效(找到:带有键{number,name}的对象)。如果要渲染子代的集合,请使用数组代替”。我在控制台上记录了结果,我意识到问题出在某些嵌套对象上,这些对象输出[object Object]。但是,我不知道为什么其他嵌套对象正确显示。下面是我的代码:
import { useState, useEffect } from 'react';
import { useHistory } from 'react-router-dom';
import '../../App.css';
const UsersList = () => {
const [error, setError] = useState(null);
const [isLoaded, setIsLoaded] = useState(false);
const [items, setItems] = useState([]);
useEffect(() => {
fetch("https://randomuser.me/api/")
.then(res => res.json())
.then(
(result) => {
setIsLoaded(true);
setItems(result.results);
},
(error) => {
setIsLoaded(true);
setError(error);
}
)
}, [])
if (error) {
return <div>Error: {error.message}</div>;
} else if (!isLoaded) {
return <div>Loading...</div>;
} else {
return (
<div>
{items.map((item, id) => (
<div className="card content-panel" key={id}>
<img src={item.picture.medium} alt="Profile pic" className="avatar-user-list" />
<div className="card-text">
<p>
{item.name.first} {item.name.last}
</p>
<p>{item.location.street}</p>
<p>{item.email}</p>
</div>
<div className="arrow-bg">
<span className="arrow">→</span>
</div>
</div>
))}
</div>
);
}
}
export default UsersList;
item.location.street是一个对象。
根据响应API,这是街道对象。
"street": {
"number": 4850,
"name": "Rue Dumenge"
},
代替渲染
<p>{item.location.street}</p>
你应该渲染像
<p>{`${item.location?.street?.number} ${item.location?.street?.name}`}</p>
本文收集自互联网,转载请注明来源。
如有侵权,请联系 [email protected] 删除。
我来说两句