javascript - 有没有办法在 Vuejs 中将 'watch' 用于本地存储?

标签 javascript vue.js vuejs2 vue-component vue-resource

我正在尝试监视本地存储:

模板:

<p>token - {{token}}</p>

脚本:

computed: {
  token() {
    return localStorage.getItem('token');
  }
}

但它不会改变,当 token 改变时。仅在刷新页面后。

有没有办法不使用 Vuex 或状态管理来解决这个问题?

最佳答案

localStorage 不是响应式(Reactive)的,但我需要“观察”它,因为我的应用程序使用 localstorage 并且不想重写所有内容所以这是我使用 CustomEvent.

每当您向存储中添加内容时,我都会发送一个CustomEvent

localStorage.setItem('foo-key', 'data to store')

window.dispatchEvent(new CustomEvent('foo-key-localstorage-changed', {
  detail: {
    storage: localStorage.getItem('foo-key')
  }
}));

然后在任何需要观看它的地方:

mounted() {
  window.addEventListener('foo-key-localstorage-changed', (event) => {
    this.data = event.detail.storage;
  });
},
data() {
  return {
    data: null,
  }
}

关于javascript - 有没有办法在 Vuejs 中将 'watch' 用于本地存储?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42974170/

相关文章:

javascript - 显示文字一段时间

vue.js - 如何在 Nuxt 中只从 buefy 导入 Navbar、Dropdown 和 Modal?

javascript - 如何在 VueJS 应用程序中使用 Google Web 字体?

vue.js - Vue 2 - 如何在方法内访问计算

javascript - Ajax让浏览器加载

javascript - 如何处理 redux 应用程序中 react-router 路由中的无效 ID?

javascript - 为什么 Settimeout 不拉取更新后的图片 URL?

vue.js - 计算属性的“评估期间错误”

vue.js - Vuejs 图片 url 链接

javascript - 如何将Vue添加到现有的Webpack项目中