我正在創建一個基本的天氣應用程式,它從 Openweathermap API 獲取資料并將其顯示在頁面上。
我不明白為什么 console.log(data) 在我的控制臺中顯示未定義?
const [data, setData] = useState()
useEffect(() => {
const fetchData = async () => {
const res = await axios.get(url)
setData(res.data)
console.log(data)
}
fetchData()
}, [])
console.log(data) 是否應該只在函式的 await 部分被決議后運行?
資料確實已成功檢索并正確顯示在頁面上,因為如果定義了資料,我只會呈現 html:
return (
{data && (
<div className="weather">
//content goes here
<div/>
我只是不明白為什么它在控制臺中顯示為未定義?
提前致謝!
uj5u.com熱心網友回復:
setData是異步的。它不會立即更新資料,因此您不會立即看到結果。
useEffect狀態更新后,您可以使用它來檢測更改
useEffect(() => {console.log(data)}, [data])
轉載請註明出處,本文鏈接:https://www.uj5u.com/qita/534516.html
標籤:反应反应挂钩
