Я пытаюсь сохранить состояние входа в систему пользователя в состоянии, а затем отправить его в файл cookie. Дело в том, что в первый раз, когда я вхожу в систему через форму входа, я устанавливаю для параметра loginState значение «вошел в систему», затем я записываю его в консоль, но он возвращает undefined, а затем при втором нажатии кнопки входа в систему (после того, как я уже вошел в систему успешно), наконец, в консоли появляется сообщение «выполнен вход». Почему это? Как это исправить? Вот соответствующий код:
const [loginStatus, setLoginStatus]= useState()
//Here we have irrelevant code that validates the login info entered and then it calls authorizeUser
const authorizeUser=()=>{
setLoginStatus('logged in')
console.info(loginStatus)
}
В дополнение к приведенному выше комментарию вы можете использовать хук useEffect для регистрации обновленного состояния: useEffect(() => { console.info(loginStatus); }, [loginStatus]);
@Кроме того, хоть он и не заходит в консоль, после нажатия кнопки он все равно устанавливается, хоть и не показывает сразу?
@Python_Mython79 да. Он не будет отображаться в вашем компоненте до следующего повторного рендеринга. React пакетно обновляет состояние для повышения производительности.



![Безумие обратных вызовов в javascript [JS]](https://i.imgur.com/WsjO6zJb.png)


useEffect запускается после каждого рендера, поэтому даже если вы устанавливаете значение loginStatus в useEffect(), при первом рендеринге loginStatus не будет иметь значения. Вы можете установить значение по умолчанию перед первым рендерингом, передав значение по умолчанию в своем вызове useState(), например:
const [loginStatus, setLoginStatus] = useState('whatever you want here, even a null string')
Он асинхронный и не обновляется сразу после установки состояния.