在 React 中初始化和使用 `sessionStorage`

IT技术 javascript reactjs
2021-04-30 15:11:03

我目前正在尝试sessionStorage在渲染发生之前将项目保存到其中

我的代码是这样的:

  componentWillMount() {
    sessionStorage.setItem("isUserLogged", false);
  }

但是,它说“sessionStorage未定义”。sessionStorage在渲染发生之前如何在 React 中使用

3个回答

使用服务器端渲染时,SessionStorage 不可用(您可以模拟它,但用户无法使用数据)。

它仅在浏览器中可用https://developer.mozilla.org/en-US/docs/Web/API/Window/sessionStorage

写入存储的示例

window.sessionStorage.setItem("key", "value");

从存储使用中检索项目

window.sessionStorage.getItem("key");

我正在使用next并使用react effect来解决问题,解决方法如下:

import React from 'react';

function Cookies() {
const [accepted, setAccepted] = React.useState(false);

React.useEffect(() => {
    if (window.sessionStorage.getItem('cookies')) {
        setAccepted(true);
    }
}, []);

function acceptPolicy() {
    sessionStorage.setItem('cookies', true);
    setAccepted(true);
}

return !accepted ? (
    <></>):(<></>)}

只读 sessionStorage 属性访问当前源的会话 Storage 对象。sessionStorage 类似于 localStorage;不同的是,localStorage 中的数据不会过期,而 sessionStorage 中的数据会在页面会话结束时被清除。