Проблема в вашем коде заключается в том, что вы не сохранили userData, как для jwt, поэтому if (user.isLoggedIn) {
в вашем UserComponent
всегда будет давать false после refre sh, попробуйте установить данные пользователя на localstorage в вашем Login
компоненте
localStorage.setItem("currentUser", JSON.stringify(res.user));
И в вашем userContext обновите ваше initialState:
const initialState = {
isLoggedIn: localStorage.getItem("jwt") ? true : false,
userData: localStorage.getItem("currentUser")
? JSON.parse(localStorage.getItem("currentUser"))
: "undefined"
};
Вы также можете попытаться проанализировать токен jwt, чтобы извлечь данные пользователя (данные могут быть не тем же объектом userData, который вы хотите):
const token = localStorage.getItem("jwt");
const userData = JSON.parse(atob(token.split(".")[1]));
Даже со всем этим вы должны создать веб-сервис для проверки / refre sh вашего jwt, потому что после истечения срока действия вашего токена вы не можете получить никакого ответа от любой веб-сервис.