Проблема с сохранением токена в useState в nextjsJavascript

Форум по Javascript
Ответить
Гость
 Проблема с сохранением токена в useState в nextjs

Сообщение Гость »


Доброе утро! У меня небольшая проблема с обновлением статуса; Мой компонент входит в систему правильно, и сзади я получаю подтверждение данных, а также токен пользователя. Проблема в том, что после получения ответа на запрос выборки я хочу обновить токен, который я получаю в своем состоянии userData, а затем сохранить его в глобальном состоянии redux (строка 62). Если в строке 31 я вставляю console.log data.token, я вижу это прекрасно, но журнал консоли в строке 37 возвращает userData с правильным именем пользователя и паролем, но с пустым токеном, почему? Уточняю, что стили я удалил для упрощения просмотра кода.
экспортировать функцию по умолчанию Home() { const [доступ, setAccess] = useState (false); const router = useRouter(); const [userData, setUserData] = useState({ имя пользователя: "", пароль: "", токен: "" }); const [ошибки, setErrors] = useState({ имя пользователя: "", пароль: "", }); асинхронная функция входа в систему (userData: {имя пользователя: строка, пароль: строка, токен: строка}) { const formData = новые FormData(); formData.append('имя пользователя', userData.username); formData.append('пароль', userData.password); пытаться { const ответ = ожидание выборки('URL', { метод: 'POST', тело: formData }); если (!response.ok) { throw new Error('Невозможно получить правильный ответ API'); } константные данные = ждут ответа.json(); если (response.status === 200) { //Строка 31 console.log(data.token) setUserData({ ...данные пользователя, токен: data.token, }); setAccess (истина); router.replace('/dashboard'); //Строка 37 console.log(userData); } еще { выдать новую ошибку('Неправильные учетные данные'); } } поймать (ошибка) { console.error(ошибка); throw new Error('Нет возможности проверить данные'); } } useEffect(() => { !access && router.replace('/'); }, [доступ]); const handleChange = (e: React.FormEvent) =>{ const свойство = (e.target как HTMLInputElement).name; const value = (e.target как HTMLInputElement).value; setUserData({...userData, [свойство]: значение}); setErrors(validations({...userData, [property]: value})); } const handleSubmit = async (e: React.FormEvent) =>{ е.preventDefault(); логин (данные пользователя); //Отправка строки 62(pushToken(userData.token)); } возвращаться (
Изображение
Вход в систему Запись Ингресар ) }
Ответить

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

Вернуться в «Javascript»