react18中如何监听localstorage的变化获取最新的本地缓存

embedded/2024/10/25 3:34:45/

有时候业务中会需要监听缓存的变化,实时更新页面的内容获取发送接口请求。这就要我们来监听对localstorage的修改,实时响应变化!!一下方法同样实用于vue项目。

同一个项目中不同页面的实现

  • 实现效果
    请添加图片描述

  • 代码分析
    修改localstoare的页面,很简单直接使用自带的api实现

import { useEffect } from "react";
function LocalStorage() {function handleChangeName() {localStorage.setItem("name", "zhangsan" + Math.random());}return (<><h1>Local Storage</h1><button onClick={handleChangeName}>提交</button></>);
}export default LocalStorage;

监听修改的页面,监听storage即可。

function Ref() {useEffect(() => {window.addEventListener("storage", (e) => {console.log("storage", e);});return () => {};}, []);return (<>....</>);
}

由于storage的限制,上面只能在不同的页面中进行监听修改,如果要在同一页面中监听,我们该怎么实现?

同一个项目中同一个页面的实现

  • 实现效果

请添加图片描述

  • 实现代码
    useEffect周期中,dispatchEvent来监听我们的自定义事件new CustomEvent
import { useEffect } from "react";function LocalStorage() {useEffect(() => {// 模拟触发自定义的 StorageEventwindow.addEventListener("localStorageChange", (e) => {console.log(e);});return () => {};}, []);// 模拟触发自定义的 StorageEventconst triggerCustomStorageEvent = () => {const key = "name";const value = "zhangsan" + Math.random();localStorage.setItem(key, value);const storageEvent = new CustomEvent("localStorageChange", {detail: { key, value },});window.dispatchEvent(storageEvent);};return (<><h1>Local Storage</h1><button onClick={triggerCustomStorageEvent}>自定义提交</button></>);
}export default LocalStorage;

总结

以上是比较常见的两种简单的方法,当然还有其他的实现,比如事件轮询,对localstorage进行封装拦截等等,都可以去尝试下,有空我再补充完善吧。


http://www.ppmy.cn/embedded/132225.html

相关文章

每天五分钟深度学习框架pytorch:从底层搭建多项式线性回归模型

本文重点 和上一节课程一样,本文我们将不使用pytorch搭建一个多项式的回归模型,来增加我们对使用pytorch搭建多项式回归模型的理解。 模型 #定义参数和模型 w=torch.randn(3,1,requires_grad=True) b=torch.randn(1,requires_grad=True) def Linear(x): return torch.mm(x…

【数据库】Mysql的锁类型

Mysql中的锁机制主要是为了保证数据的一致性和完整性&#xff0c;在并发的情况下起着至关重要的作用。其中锁的类型主要是分为以下几种&#xff1a; 按照粒度分类 全局锁&#xff1a;对于整个数据库实例进行枷锁&#xff0c;加锁后整个实例就处于只读的状态。局锁通常用于需要…

人工智能:未来生活与工作的变革力量

人工智能&#xff08;AI&#xff09;作为21世纪最具变革性的技术之一&#xff0c;正以前所未有的速度改变着我们的生活和工作方式。从医疗行业的突破性进展到企业运营的智能化&#xff0c;以及日常生活中各种智能产品的普及&#xff0c;人工智能正在成为现代社会不可或缺的一部…

深度生成模型文物修复--论文阅读笔记(导-6)

图像修复是计算机视觉领域最活跃的研究领域之一。它通常是一个不适定的逆问题&#xff0c;其中恢复的图像候选是通过近似退化图像的原始形式产生的。图像修复任务可以进一步细分为图像去噪[16]、超分辨率6和图像修复34。图像修复问题解决方法分为两类&#xff1a;传统的和基于深…

FastGPT上使用多种大语言模型

注册MindCraft并创建API KEY 首先我们在智匠MindCraft上注册账号并创建API KEY&#xff0c;参考接口调用文档&#xff0c;查看我们能调用哪些模型。我们可以看到这个开发平台上整合了主流的大语言模型&#xff0c;并且是兼容openai接口的。 docker compose 部署时修改配置文件…

了解Android中的AIDL

Android中的AIDL及其作用 一、概述 在Android开发中&#xff0c;AIDL&#xff08;Android Interface Definition Language&#xff09;是一种Android特有的接口定义语言&#xff0c;用于实现进程间通信&#xff08;IPC&#xff09;。通过AIDL&#xff0c;开发者可以在不同的应…

python海洋水动力

原文链接&#xff1a;python海洋水动力https://mp.weixin.qq.com/s?__bizMzUzNTczMDMxMg&mid2247607618&idx3&sn945a3f734c3e9d4273afa5a3e50ab565&chksmfa8264a5cdf5edb309232af17e0fda961f2fc6b4da8e8a27acc9d584bde119da7b0c60828904&token1928664218&…

攻坚金融关键业务系统,OceanBase亮相2024金融科技大会

10月15-16日&#xff0c;第六届中新数字金融应用博览会与2024金融科技大会&#xff08;简称“金博会”&#xff09;在苏州工业园区联合举办。此次大会融合了国家级重要金融科技资源——“中国金融科技大会”&#xff0c;围绕“赋能金融高质量发展&#xff0c;金融科技创新前行”…