javascript - 如何使用vuejs确保多个选项卡之间的变量一致性

标签 javascript vue.js

我有一个 vuejs 前端,仅在用户登录时才显示菜单。当我注销时,我将变量 isLogged 更新为 false:它隐藏了菜单。

如果我在多个选项卡(已登录)中打开前端,我会在其中一个选项卡中注销:我的菜单隐藏在我注销的选项卡中,但是在所有其他选项卡中,我的仅登录菜单仍然是这里。

我有一个函数 checkIfIsLogged ,它检查是否存储了 token (证明用户已登录),如果没有,则将 isLogged 变量传递给 false。我可以使用此函数来保持一致性并更新任何选项卡中的 isLogged 但最佳实践是什么?定期运行?仅当用户关注选项卡时?还有其他想法吗?

最佳答案

您可以在 localStorage 更改上放置事件监听器并正确处理它们,而不是不断检查存储。

window.addEventListener('storage', function(event) {  
  if (event.key === 'token'&& !event.newValue) {
      console.log('Logged out from another tab!');
      // do whatever you need after logout
  }
});

因此,当有人从另一个选项卡更改 localStorage 时 - 此事件将被触发。 请注意,该事件会在除已完成更改的选项卡之外的所有选项卡上触发。 您可以阅读有关 StorageEvent 的更多信息 here .

关于javascript - 如何使用vuejs确保多个选项卡之间的变量一致性,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/57569339/

相关文章:

javascript - 带有组件标签的 VueJS 路由不起作用

javascript - 在 vue.js 中使用 v-if 时,为什么我的 API 数据显示为未定义?

javascript - console.log 中出现 Axios Stop 404 错误

javascript - onchange 下拉列表将参数添加到输入框中的 url

javascript - 如何将数据从 NewsxWebPart.ts 文件发送到 Newsx.tsx 文件

javascript - 一旦用户在移动设备上提交表单,软键盘就会自动消失

security - 在 vuex 状态中保存 jwt 是一个安全问题吗?

javascript - 尝试在 Chrome 扩展选项页面中显示警报,但收到 "Cannot set property ' innerHTML' of undefined”

javascript - 如何从 jQuery(跨浏览器)返回的 XMLDocument 中获取整个 XML 字符串?

vue.js - 在 'export default' 之外的组件内调用 VueJS 方法