useLayoutEffect(() => { getUser() .then(res => setGlobalUser(res.data)) .catch(err => console.log(err)) })
The getUser
method exists for API calls. I am trying to display the user profile when the user refreshes the website.
That’s why I used useLayoutEffect
because I wanted to update the globalUser
state before painting and then show it when the web page is painted.
But the globalUser
state value is null
when I refresh the page, then quickly re-render then show the user profile information on the web page.
Advertisement
Answer
useLayoutEffect
is a hook mainly to read the layout of a component before painting. It’s not designed for data fetching. What you want can be achieved with useEffect
and a conditional rendering. As an example like so:
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; }