[英]How to save and display data retrieved from database
So I've retrieved data in JSON
format using GET
request then I'm facing a problem in saving into my state
so that I can display them into my span
/ div
/ h1
using map function
. 这是我的JSON
数据的样子:
[
{
"projectName": "SHIBA INU",
"projectToken": "SHIB",
"tokenPrice": 0.2,
"saleStart":{
"$date": "2021-12-20T20:00:00.00Z"
},
{
"projectName": "BITCOIN",
"projectToken": "BTC",
"tokenPrice": 200,
"saleStart":{
"$date": "2021-12-20T20:00:00.00Z"
}
]
所以我正在尝试这样做,但我认为它不会起作用:
const [projectData, setProjectData] = useState({})
useEffect(() => {
axios.get(`my api`).then(res => {
for(let i=0; i<res.data.length; i+1){
setProjectData(...projectData, res.data[i])
}
}).catch(e => console.log("error: ", e));
},[]);
我不确定是否应该将它们保存到数组或 object
从示例中的数据来看,您似乎正在尝试存储对象数组,因此您需要使用数组初始化 state,然后将响应中的项目也添加到数组中。 您也不需要循环:您可以一步将所有数组项与现有 state 一起传播到一个新数组中:
const [projectData, setProjectData] = useState([]);
useEffect(() => {
axios.get(`my api`).then(res => {
setProjectData([...projectData, ...res.data]);
}).catch(e => console.log("error: ", e));
}, []);
首先,您没有在 for 循环中更新i
值。 由于您的i
值永远不会小于 res.data.length,因此它将无限循环。 相反,您应该使用i++
在每次迭代时递增它:
for(let i=0; i<res.data.length; i++)
除了像这样设置你的 state 是有问题的。 React 中的setState
是异步的,这意味着当您使用它并访问您的projectData
时,它不会 promise 您立即获得更新的 state。 相反,您应该尝试在您的情况下立即更新您的 state。 还要检查为什么 reactjs 中的 setState 是异步而不是同步?
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.