javascript 当用户关闭react应用程序窗口时,如何清除本地存储?

yhived7q  于 2023-09-29  发布在  Java
关注(0)|答案(6)|浏览(162)

我正在开发一个react-redux应用程序,一旦用户登录,我将在本地存储中存储有关用户的一些信息。这样,当用户执行操作时,我可以轻松地检索用户信息。
如果用户关闭浏览器窗口,我想清除react应用程序的所有本地存储。我怎么才能做到这一点?

beq87vna

beq87vna1#

你可以使用JS函数:

localStorage.clear();

在窗口关闭时触发事件

window.onbeforeunload = function() {
   localStorage.clear();
}
b5buobof

b5buobof2#

您可以考虑使用Window.sessionStorage而不是Window.localStorage
当页面会话结束时,存储在sessionStorage中的数据将被清除。的网页
会话持续的时间与浏览器打开的时间一样长,并且在页面重新加载后仍然存在。Source

v2g6jxz6

v2g6jxz63#

你可以使用localStorage.clear,但你必须注意窗口关闭事件。另一种可能的解决方案是您可以使用会话存储,以便在您的浏览器打开之前可以使用它。之后,会话将被删除,所以你不需要做任何事情。

lndjwyie

lndjwyie4#

要在浏览器关闭时清除localStorage数据,您可以使用window.onunload事件来检查选项卡关闭。

window.onunload = () => {
   // Clear the local storage
   window.MyStorage.clear()
}
hi3rlvi2

hi3rlvi25#

您可以使用NPM包react-beforeunload

在NextJS(Typescript)上实现react-beforeunload

在你的主文件上(在NextJS世界中:_app.tsx)执行以下操作:

...
import { Beforeunload } from 'react-beforeunload';

const removeApplicationData = () => {
    if (window) { // NextJS is ServerSideRendering, therefore the window-check.
        localStorage.clear();
    }
};

...

return (
    <Beforeunload onBeforeunload={removeApplicationData}>
        <Component {...pageProps} />
    </Beforeunload>
    );
7rtdyuoh

7rtdyuoh6#

接受了@BertC的答案,但在文档中有一个更简单的方法:react-beforeunload

npm i react-beforeunload
npm install @types/react-beforeunload --save-dev

在app.tsx中

import { useBeforeunload } from 'react-beforeunload';

useBeforeunload(() => {
if (window) localStorage.clear();
  });

相关问题