Не работает переадресация в ReactJS
Суть ошибки:
После регистрации/авторизации пользователь должен понять что он авторизировался/зарегистрировался, его должно перекинусь с формы заполнения данных на главную страницу, но этого не происходит
Юзер успешно логинится/регистрируется (Юзерстейт успешно обрабатывается, бд пополняется при регистрации, проверяется на наличие пользователя при авторизации)
Ошибка заключается в том, что переадресация не работает, реакт просто перерендеривает форму с пустыми полями, ошибки не показывает. Дебаггер показывает, что это явление происходит на строчке
localStorage.setItem('token', data.token)Интересный факт - при многократных попытках это иногда (1 из ~50) срабатывает, перекидывает на главную страницу, но тут же перекидывает обратно на форму заполнения данных.
Логика:
На кнопку привязано событие click (в юзерстейте есть проверка на то, какая форма в данный момент открыта. isLogin = true - авторизация, isLogin = false - регистрация)
const click = async () => {
try {
let data
if (isLogin) {
data = await login(number, password);
} else {
data = await registration(number, password);
}
user.setUser(user)
user.setIsAuth(true)
navigate(HOME_ROUTE)
} catch (e){
alert(e.response.data.message)
}
}
Функция логин:
export const login = async (number, password) => {
const {data} = await $host.post('api/user/login', {number, password})
localStorage.setItem('token', data.token)
return jwt_decode(data.token)
}
Функция регистрации:
export const registration = async (number, password) => {
const {data} = await $host.post('api/user/registration', {number, password, role: 'ADMIN'})
localStorage.setItem('token', data.token)
return jwt_decode(data.token)
}
PS: $host:
const $host = axios.create({
baseURL: process.env.REACT_APP_API_URL
})
.env:
REACT_APP_API_URL="http://localhost:5000/"