监听localstorage的变化
这段代码是一个用来监听 localStorage 变化的函数 dispatchEventStroage()。
·
export default function dispatchEventStroage() {
const signSetItem = localStorage.setItem
localStorage.setItem = function (key, val) {
//为了触发一个事件,需要传入一个 Event 对象作为参数
let setEvent = new Event('setItemEvent')
setEvent.key = key
setEvent.newValue = val
//手动触发窗口对象上的事件的方法
window.dispatchEvent(setEvent)
//在当前上下文中调用 signSetItem 函数,并将 arguments 对象中的参数传递给该函数。
signSetItem.apply(this, arguments)
}
}
这段代码是一个用来监听 localStorage 变化的函数 dispatchEventStroage()。它的代码逻辑如下:
- 首先,它将 localStorage.setItem 方法赋值给一个变量 signSetItem。
- 然后,它将localStorage.setItem 方法重写为一个新的函数,并在这个重写的函数中实现了以下逻辑: 创建一个自定义事件对象setEvent,事件类型为 ‘setItemEvent’,并将 key 和 val 分别赋值给事件对象的 key 和 newValue属性。 使用 window.dispatchEvent(setEvent) 手动触发窗口对象上的 setItemEvent 事件。
- 最后,使用 signSetItem.apply(this, arguments) 在当前上下文中调用原始的localStorage.setItem 方法,以确保之前的设置行为仍然继续生效。
这样做的目的是为了在调用 localStorage.setItem 方法时,能够额外触发一个自定义的事件,从而允许其他代码监听这个事件并作出相应的响应。通过使用自定义事件,可以扩展对 localStorage 变化的监听和处理能力。
//main.js
import dispatchEventStroage from './utils/app.extension'
const app = createApp(App)
app.use(dispatchEventStroage)
//引用页面
window.addEventListener('setItemEvent', function (e: any) {
if (e.key === 'curPatient') {
// tableData 是需要监听的键名
console.log(JSON.parse(e.newValue)) // 这里的newValue就是localStorage中,键名为tableData对应的变化后的值。
}
})
更多推荐
所有评论(0)