Sub Title
- React useEffect doesn't run on page reload
- React Component's return relies on data from useEffect
Result
useEffect
runs AFTER each render
Code
Direction
- show empty div to end user
user can wait. They maybe think as 'The WebSite is loading'
- After first render,
useEffect
will be run.
- So,
fetchuser()
run normally and It get user
information.
App
rerender! and show RealContents to end user.
Sample Code
function App() {
const [isInit, setIsInit] = React.useState(false);
const [user, setUser] = React.useState({ loginId: "", name: "" });
React.useEffect(()=>{
const fetchuser = async () =>{
try{
const res = await UserApi.getUserInfo();
setUser(res.data.user);
}catch(err){
}finally{
setIsInit(true);
}
}
},[])
if (!isInit) {
return <div></div>;
} else {
return <MyRouter user={user}></MyRouter>;
}
}
References