useState 在 useEffect 中定义后保持初始状态
useState keeps initial state after defining it in 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]);
React setState
是异步的。它不会在调用该函数后立即更新。它将首先通过重新渲染过程来更新用户界面。重新渲染完成后,将调用 useEffect
挂钩中提供的函数。
useEffect(()=>{
console.log(categories)
}, [categories])
我有一个从 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]);
React setState
是异步的。它不会在调用该函数后立即更新。它将首先通过重新渲染过程来更新用户界面。重新渲染完成后,将调用 useEffect
挂钩中提供的函数。
useEffect(()=>{
console.log(categories)
}, [categories])