【发布时间】:2021-01-28 03:54:43
【问题描述】:
我在 useEffect 中获取数据,目的是使用获得的数据更新 useState。即使控制台日志显示已收到数据,我仍然在 oneCrypto 状态值中获得 null 。意识到它与 useState 中缺少的第二个参数有关。添加 [] 空数组时,我的 oneCrypto 显示为空。当我在数组中设置 [oneCrypto] 作为依赖项时,我的应用程序崩溃 - 请求过多,控制台日志打印一遍又一遍收到的数据,我不明白为什么......请帮忙。
import React, { useState, useEffect } from "react"
import { useParams } from "react-router-dom"
export default function SingleCrypto() {
const [loading, setLoading] = useState(false)
const [oneCrypto, setOneCrypto] = useState(null)
const { id } = useParams()
useEffect(() => {
async function getOneCrypto() {
try {
const proxyurl = "https://cors-anywhere.herokuapp.com/";
const response = await fetch(proxyurl +
"https://pro-api.coinmarketcap.com/v1/cryptocurrency/info?id=" +
id,
{
headers: {
}
}
)
const data = await response.json()
const mydata = data.data;
setOneCrypto(mydata)
console.log(oneCrypto)
} catch (error) {
console.log(error)
}
}
getOneCrypto()
}, [oneCrypto])
return <>
<h1>I am Single Crypto page</h1>
</>
}
【问题讨论】:
-
你为什么要在
useEffect()中返回一个函数?
标签: reactjs use-effect