当前位置: 首页 > news >正文

同标签实现监听LocalStorage

使用 React 生命周期函数 useEffect来监听和处理 LocalStorage 的变化 

import React, { useEffect } from 'react';const LocalStorageListener = () => {useEffect(() => {// 注册监听器const handleStorageChange = (event) => {if (event.key === 'myKey') {console.log('注册监听器', event.newValue);}};// 添加监听器window.addEventListener('storage', handleStorageChange);// 触发监听器const triggerCustomStorageEvent = () => {const storageEvent = new StorageEvent('storage', {key: 'myKey',newValue: 'newValue',url: window.location.href,});window.dispatchEvent(storageEvent);};// 移除监听器return () => {window.removeEventListener('storage', handleStorageChange);};}, []); // 空数组表示在组件挂载时运行return (<div><button onClick={() => localStorage.setItem('myKey', 'newValue')}>修改 localStorage</button><button onClick={() => window.dispatchEvent(new StorageEvent('storage', {key: 'myKey',newValue: localStorage.getItem('myKey'),url: window.location.href,}))}>手动触发 StorageEvent</button></div>);
};export default LocalStorageListener;

使用Vue生命周期钩子 onMounted 和 onUnmounted来监听和处理 LocalStorage 的变化 

<template><div><button @click="updateLocalStorage">修改 localStorage</button><button @click="triggerCustomStorageEvent">手动触发 StorageEvent</button></div>
</template><script lang="ts" setup>
import { onMounted, onUnmounted } from 'vue';
// 注册监听器
const handleStorageChange = (event: StorageEvent) => {if (event.key === 'myKey') {console.log('Detected localStorage change:', event.newValue);}
};const updateLocalStorage = () => {localStorage.setItem('myKey', 'newValue');
};
// 触发监听器
const triggerCustomStorageEvent = () => {const storageEvent = new StorageEvent('storage', {key: 'myKey',newValue: 'newValue',url: window.location.href,});window.dispatchEvent(storageEvent);
};
// 添加监听器
onMounted(() => {window.addEventListener('storage', handleStorageChange);
});
// 移出监听器
onUnmounted(() => {window.removeEventListener('storage', handleStorageChange);
});
</script>

http://www.lryc.cn/news/469426.html

相关文章:

  • JAVA高性能缓存项目
  • 智慧农业大数据平台:智汇田园,数驭未来
  • Go语言基础教程:可变参数函数
  • 高并发场景下解决并发数据不一致
  • OpenAI GPT-o1实现方案记录与梳理
  • Excel:vba实现生成随机数
  • Python | Leetcode Python题解之第506题相对名次
  • 安全见闻(6)
  • Promise、async、await 、异步生成器的错误处理方案
  • 腾讯云:数智教育专场-学习笔记
  • Ovis: 多模态大语言模型的结构化嵌入对齐
  • python的Django的render_to_string函数和render函数模板的使用
  • 基于Python大数据的王者荣耀战队数据分析及可视化系统
  • 【Linux学习】(3)Linux的基本指令操作
  • Mac 使用脚本批量导入 Apple 歌曲
  • 全桥PFC电路及MATLAB仿真
  • 【安当产品应用案例100集】025-确保数据安全传输——基于KMS与HSM的定期分发加密解决方案
  • 十 缺陷检测解决策略之三:频域+空域
  • 有望第一次走出慢牛
  • 计算机网络(十二) —— 高级IO
  • 电力行业 | 等保测评(网络安全等级保护)工作全解
  • 总裁主题CeoMax-Pro主题7.6开心版
  • 深入探讨编程的核心概念、学习路径、实际应用以及对未来的影响
  • IDEA如何将一个分支的代码合并到另一个分支(当前分支)
  • Python实现基于WebSocket的stomp协议调试助手工具
  • 基于neo4j的旅游知识图谱维护与问答系统
  • 竞赛学习路线推荐(编程基础)
  • webRTC搭建:STUN 和 TURN 服务器 链接google的有点慢,是不是可以自己搭建
  • 利用Pix4D和ArcGIS计算植被盖度
  • 用docker Desktop 下载使用thingsboard/tb-gateway