useState在useEffect中定义后保持初始状态



我有一个异步函数,它从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"
}

async函数与Promise,确保您知道它的含义。

此代码中的console.log行始终在Promise解析之前运行。

如果您想观察类别的变化,请使用另一个useEffect:

useEffect(() => {
console.log(categories);
}, [categories]);

您的状态已经用您想要的数据更新了,它显示了具有初始值的类别,因为您已经呈现了没有依赖关系的useEffect。在更新之前,它得到了安慰。请尝试使用以下代码段进行日志记录。

useEffect(() => {
console.log(categories)
}, [categories]);
ReactsetState是异步的。它不会在调用函数后立即更新。它将首先经过重新渲染过程来更新用户界面。一旦重新渲染完成,就会调用useEffect钩子中提供的函数。
useEffect(()=>{
console.log(categories)
}, [categories]) 

最新更新