关于监听localStorage变化的问题
vue项目,比如我在index.vue页面,点击一个按钮,然后用window.open新窗口打开一个页面(case.vue)
index.vue
const { href } = that.$router.resolve({
name: 'case',
query: {
abc: 'abc'
}
})
window.open(href, '_blank')
有如下代码
伪代码:
case.vue
public mounted() {
window.localStorage.setItem('reportParams', JSON.stringify({}))
window.localStorage.setItem('reportParamsObj', JSON.stringify({}))
this.$nextTick(() => {
window.addEventListener('storage', this.reportParamsObjStorage, false)
})
}
public destroyed() {
window.removeEventListener('storage', this.reportParamsObjStorage)
}
public reportParamsObjStorage(e: any) {
// 一堆逻辑省略
// 重点是这一句 ie11下就会导致页面卡死 内存溢出 不明白为什么
window.localStorage.setItem('reportParamsObj', JSON.stringify({}))
// 这两句都正常
// localStorage.setItem('reportParamsObj', '')
// localStorage.removeItem('reportParamsObj')
}
}
case.vue页面我打开一个还算正常,当我再打开一个case.vue页面就直接内存飙升,卡死了。
问题是解决了,但是不知道为啥,求各路大神解释下
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(1)
你这是个死循环,你监听了storage事件,然后在事件回调里面修改storage,然后又会触发storage事件,然后又修改storage......'
另外关键是
这就是为什么开多个页面会卡死的原因