我正在开发一个react-redux应用程序,一旦用户登录,我将在本地存储中存储有关用户的一些信息。这样,当用户执行操作时,我可以轻松地检索用户信息。如果用户关闭浏览器窗口,我想清除react应用程序的所有本地存储。我怎么才能做到这一点?
beq87vna1#
你可以使用JS函数:
localStorage.clear();
在窗口关闭时触发事件
window.onbeforeunload = function() { localStorage.clear(); }
b5buobof2#
您可以考虑使用Window.sessionStorage而不是Window.localStorage。当页面会话结束时,存储在sessionStorage中的数据将被清除。的网页会话持续的时间与浏览器打开的时间一样长,并且在页面重新加载后仍然存在。Source。
Window.sessionStorage
Window.localStorage
v2g6jxz63#
你可以使用localStorage.clear,但你必须注意窗口关闭事件。另一种可能的解决方案是您可以使用会话存储,以便在您的浏览器打开之前可以使用它。之后,会话将被删除,所以你不需要做任何事情。
lndjwyie4#
要在浏览器关闭时清除localStorage数据,您可以使用window.onunload事件来检查选项卡关闭。
localStorage
window.onunload
window.onunload = () => { // Clear the local storage window.MyStorage.clear() }
hi3rlvi25#
您可以使用NPM包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> );
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(); });
6条答案
按热度按时间beq87vna1#
你可以使用JS函数:
在窗口关闭时触发事件
b5buobof2#
您可以考虑使用
Window.sessionStorage
而不是Window.localStorage
。当页面会话结束时,存储在sessionStorage中的数据将被清除。的网页
会话持续的时间与浏览器打开的时间一样长,并且在页面重新加载后仍然存在。Source。
v2g6jxz63#
你可以使用localStorage.clear,但你必须注意窗口关闭事件。另一种可能的解决方案是您可以使用会话存储,以便在您的浏览器打开之前可以使用它。之后,会话将被删除,所以你不需要做任何事情。
lndjwyie4#
要在浏览器关闭时清除
localStorage
数据,您可以使用window.onunload
事件来检查选项卡关闭。hi3rlvi25#
您可以使用NPM包react-beforeunload
在NextJS(Typescript)上实现react-beforeunload
在你的主文件上(在NextJS世界中:_app.tsx)执行以下操作:
7rtdyuoh6#
接受了@BertC的答案,但在文档中有一个更简单的方法:react-beforeunload
在app.tsx中