javascript 在绘制组件之前,在useLayoutEffect中使用API更新状态不起作用

p4rjhz4m  于 2023-01-01  发布在  Java
关注(0)|答案(1)|浏览(131)
useLayoutEffect(() => {
  getUser()
    .then(res => setGlobalUser(res.data))
    .catch(err => console.log(err))
})

getUser方法是为API调用而存在的。我试图在用户刷新网站时显示用户配置文件。这就是我使用useLayoutEffect的原因,因为我希望在绘制之前更新globalUser状态,然后在绘制网页时显示它。
但是,当我刷新页面,然后快速重新呈现并在网页上显示用户配置文件信息时,globalUser状态值为null

vc9ivgsu

vc9ivgsu1#

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;
}

相关问题