() => {
const [myValue, setMyValue] = useState(0);
const logMyValue = () => console.log(myValue);
useEffect(() => {
setMyValue(myValue + 1);
logMyValue(); // Выводит в кносоль "0"
}, []);
return <button onClick={logMyValue}>Кнопка</button>;
};
При первом рендеринге компоненты в myValue должно записываться число 1 и выводиться в консоль с помощью функции logMyValue, но выводится 0, то есть старое значение, почему так и как это можно исправить? К слову при клике на кнопку выводится единица.
вызывается асинхронно насколько помню, могу ошибаться конечно
я не помню как тогда решил такую проблему, но попробуй чтото вот такое setMyValue(myValue => myValue + 1)
https://t.me/react_js иди сюда лучше
а расскажите мне, когда дёргается useEffect и когда set срабатывает?
useEffect при первом рендеринге страницы, а сет, когда внутри useEffecta, разве не?
Все верно, колбек useState асинхроный из-за батчинга. Ты не получишь нужное значение подобным образом
как можно решить эту проблему?
Много способов, какие ты еще обдумывал?
я один варик вижу, передать пропсом нужное значение в функцию logMyValue
а какие еще есть способы?
Обсуждают сегодня