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

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

有时候业务中会需要监听缓存的变化,实时更新页面的内容获取发送接口请求。这就要我们来监听对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.mrgr.cn/news/51957.html

相关文章:

  • 合并与变形
  • 高德开放平台——实时路径规划优化指南
  • Google Ads API v18 发布,开发者迎来全新功能与优化
  • Python机器学习
  • 84. 拉伸ExtrudeGeometry
  • 【论文阅读】Detach and unite: A simple meta-transfer for few-shot learning
  • 产品更新|DuoPlus云手机APP预装、批量管理功能新上线!
  • [python]python中sort的key参数使用
  • Sap_FI_凭证类型
  • JavaWeb合集-SpringBoot项目配套知识
  • MATLAB中intersect函数用法
  • Js 更加优雅地实现Form表单重置
  • WindowsAPI|每天了解几个winAPI接口之网络配置相关文档Iphlpapi.h详细分析四
  • 书籍推荐:《从零构建大型语言模型》附免费PDF下载
  • 【2023医学图像分割文献】UniverSeg: 通用医学图像分割方法
  • MongoDB 8.0已全面可用
  • 制冷压缩机液击介绍
  • 轻松学Python|数据类型:数字类型、空类型、布尔类型
  • 使用Python解决化学问题的实用指南
  • 苹果开源Depth Pro:0.3秒实现从2D图像到3D深度图的革命性突破