同标签实现监听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.rhkb.cn/news/457099.html

如若内容造成侵权/违法违规/事实不符,请联系长河编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

[旧日谈]高清画面撕裂问题考

背景 无边框透明背景透明的窗口&#xff0c;在随着缩放比例非整数倍数放大时的画面发生了露底、撕裂问题。 当我们在使用Qt开发的时候&#xff0c;遇到了一个结构性问题。因为我们的软件是自己做的&#xff0c;所以要自己定义标题栏&#xff0c;所以我们设置了软件为FrameLess…

mono源码交叉编译 linux arm arm64全过程

初级代码游戏的专栏介绍与文章目录-CSDN博客 我的github&#xff1a;codetoys&#xff0c;所有代码都将会位于ctfc库中。已经放入库中我会指出在库中的位置。 这些代码大部分以Linux为目标但部分代码是纯C的&#xff0c;可以在任何平台上使用。 源码指引&#xff1a;github源…

mysql——事务详解

一、事务定义 事务&#xff1a;事务是一个最小的不可在分的工作单元&#xff1b;通常一个事务对应一个完整的业务(例如银行账户转账业务&#xff0c;该业务是一个最小的工作单元)事务保证多条sql语句要么同时执行成功&#xff0c;要么同时执行失败一个完整的业务需要批量的DML…

移除Microsoft Edge浏览器“由你的组织管理“提示的方法

背景&#xff1a; 点击Microsoft Edge浏览器右上角的按钮有时候会出现提示“由你的组织管理”。但实际上自己的电脑并没有被公司或其他企业管理。 解决方案&#xff1a; 提示&#xff1a;修改注册表如果操作不当会影响电脑&#xff0c;请提前备份注册表&#xff01;&#xff…

Java 开发——(上篇)从零开始搭建后端基础项目 Spring Boot 3 + MybatisPlus

一、概述 记录时间 [2024-10-23] 本文是一个基于 Spring Boot 3 MybatisPlus 的项目实战开发&#xff0c;主要涵盖以下几个方面&#xff1a; 从零开始的项目创建IDEA 中开发环境的热部署Maven、Swagger3、MybatisPlus 等的配置路由映射知识静态资源访问文件上传功能实现拦截器…

Qt之QCamera的简单使用

文章目录 一、相机操作相关示例1.摄像头操作内容使用示例2.摄像头信息展示使用示例3.摄像头设置切换、预览操作示例 二、相机使用个人操作理解1.相机类支持信息获取2.相机类曝光、焦点、图像处理控制信息获取3.快速启动相机设置&#xff08;各个设备处于理想状态&#xff09; 三…

地平线x5下运行yolo11s-seg模型

经过地瓜机器人工作人员&#xff08;感谢吴超同学&#xff09;的及时技术支持&#xff0c;整体比较顺利的跑起来了yolo11s-seg分割模型。将一些经验记录下来&#xff1a; 首先下载使用docker镜像&#xff1a; https://developer.d-robotics.cc/forumDetail/228559182180396619 …

linux驱动—注册总线分析

成功地在直接注册了一个总线&#xff0c;并且在总线目录下创建了属性文件&#xff0c;什么会在 sys/bus 目录下生成 mybus,目录以及对应的 devices,drivers, drivers_autoprobe,drivers_probe&#xff0c;uevent目录和属性呢? /sys,目录下的目录都对应一个kobject&#xff0c;…

如何成为录屏高手?2024年全新录屏工具梳理,你选对了吗?

如何录屏&#xff1f;录屏现在对我们来说太重要了&#xff0c;不管是做教学视频、演示文稿&#xff0c;还是录游戏或者教别人怎么用软件&#xff0c;都离不开录屏工具。但是市面上录屏软件一大堆&#xff0c;挑个适合自己的真不容易。今天&#xff0c;我就来给你介绍几款特别火…

知识图谱解码:AI 如何构建知识网络

大家好&#xff0c;我是Shelly&#xff0c;一个专注于输出AI工具和科技前沿内容的AI应用教练&#xff0c;体验过300款以上的AI应用工具。关注科技及大模型领域对社会的影响10年。关注我一起驾驭AI工具&#xff0c;拥抱AI时代的到来。 AI工具集1&#xff1a;大厂AI工具【共23款…

凸轮应用实例(带进料装置的伺服压机控制)

凸轮表凸轮关系曲线建立 博途S7-1500T PLC曲柄连杆模型仿真(电子凸轮完整配置+SCL源代码)-CSDN博客文章浏览阅读4次。这篇博客介绍了曲柄连杆机构的位移与曲柄转动角度关系,通过MATLAB进行计算和Simulink验证,并提供博途SCL源代码。文章链接提供了详细的曲柄连杆数学模型分析…

分布式理论基础

文章目录 1、理论基础2、CAP定理1_一致性2_可用性3_分区容错性4_总结 3、BASE理论1_Basically Available&#xff08;基本可用&#xff09;2_Soft State&#xff08;软状态&#xff09;3_Eventually Consistent&#xff08;最终一致性&#xff09;4_总结 1、理论基础 在计算机…

WASM 使用说明23事(RUST实现)

文章目录 1. wasm是什么1.1 chatgpt定义如下:1.2 wasm关键特性&#xff1a; 2. wasm demo2.1 cargo 创建项目2.2 编写code2.3 安装wasm-pack2.4 编译 3.1 html页面引用wasm代码&#xff08;js引用&#xff09;3.2 访问页面4 导入js function4.1 编写lib.rs文件&#xff0c;内容…

【SpringCloud】06-Sentinel

1. 雪崩问题 一个微服务出现问题导致一系列微服务都不可以正常工作。 服务保护方案&#xff1a; 请求限流。线程隔离。 服务熔断 2. Sentinel 启动Sentinel java -Dserver.port8090 -Dcsp.sentinel.dashboard.serverlocalhost:8090 -Dproject.namesentinel-dashboard -ja…

【已解决】C# NPOI如何在Excel文本中增加下拉框

前言 上图&#xff01; 解决方法 直接上代码&#xff01;&#xff01;&#xff01;&#xff01;综合了各个大佬的自己修改了一下&#xff01;可以直接规定在任意单元格进行设置。 核心代码方法块 #region Excel增加下拉框/// <summary>/// 增加下拉框选项/// </s…

centeros7 编译ffmpeg

使用yum安装的路似乎已经堵住了&#xff0c;请求的镜像全是404或503 1.打开终端并使用yum安装EPEL存储库(Extra Packages for Enterprise Linux)&#xff1a;sudo yum install epel-release2.接下来&#xff0c;使用以下命令来安装FFmpeg&#xff1a;sudo yum install ffmpeg …

有关spring,springboot项目的知识点

文章目录 1.Spring基本介绍1.1Spring官网1.2Spring的发展 2.SpringBoot2.1SpringBoot快速入门2.1.1创建SpringBoot工程,并勾选web开发相关依赖2.1.2定义HelloController类,并添加方法helllo,且添加注解2.1.3运行测试 3.HTTP协议3.1HTTP协议的概念3.1.1HTTP的特点 3.2HTTP-请求协…

YOLOv8_ ByteTrack目标跟踪、模型部署

YOLOv8目前支持BoT-SORT和ByteTrack两种多目标跟踪算法&#xff0c;默认的目标跟踪算法为BoT-SORT 如果要使用ByteTrack跟踪算法&#xff0c;可以添加命令行参数trackerbytetrack.yaml 一、 VisDrone2019数据集 VisDrone&#xff1a;无人机目标检测和追踪基准数据集。&#x…

《云原生安全攻防》-- K8s攻击案例:权限维持的攻击手法

在本节课程中&#xff0c;我们将一起深入了解K8s权限维持的攻击手法&#xff0c;通过研究这些攻击手法的技术细节&#xff0c;来更好地认识K8s权限维持所带来的安全风险。 在这个课程中&#xff0c;我们将学习以下内容&#xff1a; K8s权限维持&#xff1a;简单介绍K8s权限维持…

【大模型理论篇】主流大模型的分词器选择及讨论(BPE/BBPE/WordPiece/Unigram)

1. 背景分析 分词是将输入和输出文本拆分成更小单位的过程&#xff0c;使得大模型能够处理。token可以是单词、字符、子词或符号&#xff0c;取决于模型的类型和大小。分词可以帮助模型处理不同的语言、词汇和格式&#xff0c;并降低计算和内存成本。分词还可以通过影响token的…