Hello im trying to create a private Route
PrivateRoute.js
const PrivateRoute = ({ children, ...rest }) => {
return (
<Route
{...rest}
render={({ location }) =>
Authenticate() ? (
children
) : (
<Redirect
to={{
pathname: "/login",
state: { from: location },
}}
/>
)
}
/>
);
};
export default PrivateRoute;
When I request a private route, the child component renders and after a while the Autheticate function is completed. In the Authenticate function I make a request that returns the token data and saves it in the sessionStorage
Authenticate.js
const Authenticate = async () => {
let token = localStorage.getItem("token");
if (token) {
token = "Bearer " + token;
let response = await tokenRequest(token);
if (response) {
if (response.status === 200) {
await sessionStorage.setItem(
"userData",
JSON.stringify(response.data.token)
);
return true;
} else {
localStorage.clear();
sessionStorage.clear();
return false;
}
} else {
return false;
}
} else {
localStorage.clear();
return false;
}
};
export default Authenticate;
How could I finish the function's task and then redirect to the child component?