javascript - 使用 useState 存储对象数组的状态
问题描述
我正在处理反应并从这里获取数据,https://jsonplaceholder.typicode.com/users。这将返回一个对象数组,我希望将其存储在我的 useState 挂钩中。我现在尝试的是这样的:
import React, { useState, useEffect } from "react";
const UserList = () => {
const [data, setData] = useState([
{
id: "",
email: "",
website: "",
phone: "",
name: ""
}
]);
useEffect(() => {
fetch("https://jsonplaceholder.typicode.com/users")
.then((response) => response.json())
.then((json) => {
console.log(json);
json.map((object) => {
setData((data) => [
...data,
{
id: object.id,
email: object.email,
website: object.website,
phone: object.phone,
name: object.name
}
]);
});
});
}, []);
return (
<>
<div>
<ul>
{data.map((info) => {
<li key = {info.id}></li>;
})}
</ul>
</div>
</>
);
};
export default UserList;
我觉得我在使用扩展运算符存储数据时犯了一些错误,因为 console.log 显示。当我在 data.map 函数中放置一个 console.log(info) 时,它会不断重复这十个对象。我有点不确定这部分代码到底是如何工作的,所以如果有人可以提供任何建议或任何有用的东西。
解决方案
删除json.map
并放置此代码
setData((data) => [
...data,
...json.map(({id, email, website, phone, name}) => ({
id,
email,
website,
phone,
name
})),
]);
推荐阅读
- c# - 如何在 Xamarin.Forms 中实现经典媒体选择器?
- c# - 不确定我是否正在创建正确的生命周期范围
- android - Jetpack compose navigation popUpTo inclusive true 未从 backstack 清除可组合屏幕
- react-admin - 如何强制在 react-admin 中加载 referenceField?
- c - 编写一个 func invert(x,p,n) 返回 x,其中从位置 p 开始的 n 位反转(1 变为 0,反之亦然),其他保持不变
- docker - 带有 docker/build-push-action 和 GitHub Actions 的生产环境文件
- ios - 我需要设置哪个 iOS 目标以避免将 Swift 运行时库与我的 iOS 应用程序捆绑在一起?
- azure - 查询本地数据网关连接 Azure 分析服务的使用情况
- r - Find cumulative sum values in R / Error: Problem with `mutate()` column
- javascript - .toggleClass() 函数在快速点击时无法正常工作