В моем коде реакции внутри компонента я извлекаю значение из хранилища сеанса (внутри хука useEffect). Когда консоль печатается, она показывает значение. Но внутри метода рендеринга (или метода возврата) он не имеет только что полученного значения. Есть ли задержка при извлечении из хранилища сеансов?
Обойдена проблема после сохранения того же состояния и извлечения из рендера!
let myValue = '';
useEffect(()=>{
myValue = sessionStorage.getItem("someKey");
},[]);
// In the return method
return {
<div>{myValue}</div>
}
Почему значение, полученное из хранилища сеанса, недоступно сразу при рендеринге?
Да! Вот так я обошел проблему.



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


Нет, вызовы localStorage и sessionStorage sync
Вы не видите значение в рендере, потому что представление не рендерится повторно. Вы должны установить состояние, получить новый реквизит или заставить рендер его увидеть.
Как принудительно обновить хуки
const [, updateState] = React.useState();
const forceUpdate = useCallback(() => updateState({}), []);
Это доступно сразу
return {
<div>{sessionStorage.getItem("someKey")}</div>
}
Нет, все вызовы sessionStorage synchronous.
Проблема здесь в том, что вы ожидаете, что изменение значения переменной вызовет повторную визуализацию. React так не работает, и вам понадобится другой подход, если вы хотите изменить значение и повторно отобразить его:
Рассмотреть возможность:
const [myValue, setMyValue] = useState('');
useEffect(()=>{
setMyValue(sessionStorage.getItem("someKey"));
},[]);
// In the return method
return {
<div>{myValue}</div>
}
Установка частной переменной из «useEffect» не приведет к повторному рендерингу. Возможно, вы захотите использовать
useState, чтобы у вас был механизм для установки значения и регистрации повторного рендеринга.