Доброе утро! У меня небольшая проблема с обновлением статуса; Мой компонент входит в систему правильно, и сзади я получаю подтверждение данных, а также токен пользователя. Проблема в том, что после получения ответа на запрос выборки я хочу обновить токен, который я получаю в своем состоянии 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)); } возвращаться (
Вход в систему Запись Ингресар ) }
Мобильная версия