const AuthInit: FC= ({children}) => { const {auth, logout, setCurrentUser} = useAuth() const didRequest = useRef(false) const [showSplashScreen, setShowSplashScreen] = useState(true) // We should request user by authToken (IN OUR EXAMPLE IT'S API_TOKEN) before rendering the application useEffect(() => { const requestUser = async (apiToken: string) => { try { if (!didRequest.current) { const {data} = await getUserByToken(apiToken) if (data) { setCurrentUser(data) } } } catch (error) { console.error(error) if (!didRequest.current) { logout() } } finally { setShowSplashScreen(false) } return () => (didRequest.current = true) } if (auth && auth.api_token) { requestUser(auth.api_token) } else { logout() setShowSplashScreen(false) } // eslint-disable-next-line }, []) return showSplashScreen ? : <>{children}> }
I've got two questions:
didRequest do in this component?true - so that it breaks here if I set a breakpoint: return () => (didRequest.current = true)?Hi,
1) didRequest is needed to be sure that we made only one request the getting user data from the server.
2) Just refresh the page and you will have a request.
Regards,
Keenthemes support