vue监听localstorage值变化
在vue中实现监听localstorage中某个键对应的值的变化在根目录下创建一个名为utils的文件夹,在文件夹中创建一个tool.js文件//****将这段内容放在tool.js文件中****// 重写setItem事件,当使用setItem的时候,触发,window.dispatchEvent派发事件function dispatchEventStroage() {const signSet
·
在vue中实现监听localstorage中某个键对应的值的变化
在根目录下创建一个名为utils的文件夹,在文件夹中创建一个tool.js文件
//****将这段内容放在tool.js文件中****
// 重写setItem事件,当使用setItem的时候,触发,window.dispatchEvent派发事件
function dispatchEventStroage() {
const signSetItem = localStorage.setItem
localStorage.setItem = function(key, val) {
let setEvent = new Event('setItemEvent')
setEvent.key = key
setEvent.newValue = val
window.dispatchEvent(setEvent)
signSetItem.apply(this, arguments)
}
}
export default dispatchEventStroage;
在main.js中引入使用
import tool from "./utils/tool";
Vue.use(tool);
在需要监听localstorage中数据变化的文件中加以下代码
//解决this指向问题,在window.addEventListener中this是指向window的。
//需要将vue实例赋值给_this,这样在window.addEventListener中通过_this可以为vue实例上data中的变量赋值
let _this=this;
//根据自己需要来监听对应的key
window.addEventListener("setItemEvent",function(e){
//e.key : 是值发生变化的key
//例如 e.key==="token";
//e.newValue : 是可以对应的新值
if(e.key==="token"){
console.log(e.newValue);
_this.token=e.newValue;
}
})
到这里就可以在localstorage中token的值变化时在控制台输出新的值了 , 此方法只能监听到setItem事件.
更多推荐
已为社区贡献1条内容
所有评论(0)