[英]Updating state using api in useLayoutEffect does not work before painting component
useLayoutEffect(() => {
getUser()
.then(res => setGlobalUser(res.data))
.catch(err => console.log(err))
})
getUser
方法存在 API 次调用。 我试图在用户刷新网站时显示用户个人资料。 这就是为什么我使用useLayoutEffect
的原因,因为我想在绘制之前更新globalUser
state,然后在绘制 web 页面时显示它。
但是当我刷新页面时, globalUser
state 的值是null
,然后快速重新渲染然后在 web 页面上显示用户个人资料信息。
useLayoutEffect
是一个钩子,主要用于在绘制之前读取组件的布局。 它不是为数据获取而设计的。 你想要的可以通过useEffect
和条件渲染来实现。 举个例子:
useEffect(() => {
getUser()
.then(res => setGlobalUser(res.data))
.catch(err => console.log(err))
})
if(!globalUser) {
// you can return a loader here if you want
return null;
}
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.