会话存储在获取时是否有延迟?

Bij*_*pil 1 javascript storage session-storage reactjs react-hooks

在我的反应代码中,在组件内部,我从会话存储中获取一个值(在 useEffect 挂钩内)。当控制台打印时,它会显示该值。但在渲染(或返回方法)内部,它没有刚刚获取的值。从会话存储中获取数据时是否存在延迟?

在状态中存储相同内容并在渲染内部获取后,解决了这个问题!

let myValue = '';
useEffect(()=>{
    myValue = sessionStorage.getItem("someKey");
},[]);
// In the return method
return {
    <div>{myValue}</div>
}
Run Code Online (Sandbox Code Playgroud)

为什么从会话存储中获取的值不能立即在渲染中可用?

Jam*_*xon 5

这里的问题是您期望变量值更改来触发重新渲染。React 不会以这种方式工作,如果你想更改值并重新渲染,你将需要另一种方法:

考虑:

const [myValue, setMyValue] = useState('');

useEffect(()=>{
   setMyValue(sessionStorage.getItem("someKey"));
},[]);

// In the return method
return {
    <div>{myValue}</div>
}
Run Code Online (Sandbox Code Playgroud)