【发布时间】:2022-01-25 20:59:09
【问题描述】:
我正在尝试从 Axios 获取数据,但我认为在获取数据时会执行 return 语句。
import axios from 'axios'
import React, { useState, useEffect} from 'react'
export default function Overall() {
const [post, setPost] = useState({
date:null,
total:null
});
useEffect(() => {
async function fetchData(){
await axios.get(`https://data.covid19india.org/v4/min/data.min.json`).then((response) => {
console.log("Inside Then block");
setPost({'total':Object.entries(response.data).map(([k,v])=>
// console.log(k,v.meta.last_updated,v.total.confirmed)
v.total.confirmed
).reduce((prev, curr)=>prev+curr,0)
})
setPost({'date':Object.entries(response.data)[0][1].meta.last_updated})
});
}
fetchData()
console.log("Data Fetched");
}, []);
console.log("Post: ",post);
return (
<div className='overall-container'>
<div>
<h2>India</h2>
</div>
<div>
<h2>Total: {post.total}</h2>
<h2>Date: {post.date}</h2>
</div>
</div>
)
}
问题是,作为回报,只有{post.date} 可以工作,而{post.curr} 不能。我不知道为什么?我是新手,所以我不太了解。如果有人能解释一下,我将不胜感激。
【问题讨论】:
-
(1) 您正在覆盖
post状态下的数据,而不是合并它们,(2) 如果您正在使用 await,则无需使用.then()
标签: reactjs react-hooks axios