Я использую крючок для защиты своих маршрутов. Проблема, с которой я сталкиваюсь, заключается в том, что вызов для проверки статуса аутентификации пользователя возвращает обещание, поэтому ловушка возвращает значение по умолчанию, которым является a, а затем статус аутентификации больше не полезен, поскольку мы уже перенаправили.
Так как же мне дождаться возврата с крючка, пока не будет выполнена проверка аутентификации? Вот мой код:
export function ProtectedRoute(props){
const [loggedIn, setLoggedIn] = useState(false);
// Similar to componentDidMount and componentDidUpdate:
useEffect(() => {
async function fetchUser() {
let user = null;
try {
user = await Auth.currentAuthenticatedUser()
if (user) {
setLoggedIn(true);
} else
{
setLoggedIn(false);
}
} catch (e) {
setLoggedIn(false);
}
}
fetchUser()
});
console.log("ProtectedRoute: returning " + loggedIn);
if (loggedIn)
return props.component
else
return <Redirect to={{pathname: '/login'}}/>
}