【发布时间】:2022-01-19 11:24:59
【问题描述】:
我有一个从 API 获取一些数据的异步函数。因为我需要这些数据来正确加载我的组件,所以我决定在 useEffect 中获取数据,然后将其存储在 useState 中,这样就可以了。但是,如果我尝试通过控制台记录它,它只会显示其初始状态,这在技术上意味着它仍未设置或控制台日志在分配 useState 之前运行。
提前感谢您的帮助。
const [categories, setCategories] = useState([])
useEffect(() => {
fetchListProductCats().then(function(result){
setCategories(result.data)
})
console.log(categories) // returns -> []
}, []);
if(!categories.length){
return "loading"
}
【问题讨论】:
-
你自己说的,它是异步的,你记录的时候数据还没有设置。
-
是的,我就是这么想的,但是我要如何等待异步函数完成呢?
-
好吧,在这种情况下,不仅你的函数是异步的,而且在 React 中设置状态也是异步的。因此,您将需要使用另一种效果来等待对
categories的更改(如几个答案中所述)
标签: javascript reactjs use-effect use-state