首页 > 其他分享 >localeStorage 当前标签页变化监听不到,只能监听不同标签页变化,自己写方法监听

localeStorage 当前标签页变化监听不到,只能监听不同标签页变化,自己写方法监听

时间:2024-11-08 10:31:08浏览次数:1  
标签:const localeStorage 标签 userId 监听 window dispatchEventStroage newValue

 

1.在utils中新建一个文件watchLocalStorage.ts

export default function dispatchEventStroage() {
	const signSetItem = localStorage.setItem
	localStorage.setItem = function (key, val) {
		let setEvent = new Event('setItemEvent')
		setEvent.key = key
		setEvent.newValue = val
		window.dispatchEvent(setEvent)
		// @ts-ignore
		signSetItem.apply(this, arguments)
	}
}

2.页面初始化引入并调用  import dispatchEventStroage from './utils/watchLocalStorage'

//在需要的业务逻辑组件中调用监听store的和用户信息变化
dispatchEventStroage()

  useEffect(() => {     

          //监听store的和用户信息变化
          dispatchEventStroage()

    const handleSetItemEvent = function (e: any) {
      if (e.key === 'UserData') {
        const newValue = e.newValue;
        const userData = newValue && JSONparse(newValue);
        const userId = userData?.userId;
        if (userId && !socket) {
          startWebSocket(userId)
          return
        }
        //退出登录
        if (!userId && socket) {
          stopWebSocket()
        }
      }
    }
 
    window.addEventListener('setItemEvent', handleSetItemEvent)
    // document.addEventListener('visibilitychange', handleVisibilityChange);
    // 返回一个清理函数,以便在组件卸载时移除事件监听器
    return () => {
      window.removeEventListener('setItemEvent', handleSetItemEvent)
      // window.removeEventListener('visibilitychange', handleVisibilityChange)
    }
  }, [socket])

  

标签:const,localeStorage,标签,userId,监听,window,dispatchEventStroage,newValue
From: https://www.cnblogs.com/xiaoyaoweb/p/18534608

相关文章

  • HTML的基础标签
    01-基础标签01-基础标签1.认识HTML2.网页基础知识3.认识标签meta标签div标签H系列标题标签排序标签p段落标签span标签a标签--超链接a标签--锚点img标签其他常用标签4.特殊符号5.语义化√.作业与练习1.认识HTMLHTML是HyperTextMarkupLanguage(超文本标记语言)......
  • PbootCMS增添同tag标签文章数目显示
    修改文件:文件路径:/apps/home/controller/ParserController.php添加代码:在找到的代码段下方添加:php $tags=implode(',',$rs);//把栏目tags串起来$tagsArrSum=array_count_values(explode(',',$tags));//@mk-tags_one_sum把所有tags组成数组并计算每个......
  • echarts柱状图轮播图-自动滚动首尾相连-固定Y轴标签宽度-鼠标悬浮停止自动轮播-可上下
     1.调接口获取数据functiongetProducChart(){constHTMLElement=document.getElementById(`paiming_chart`)asHTMLElement;constmyChart=echarts.init(HTMLElement);//虚拟数据constx:any=["1周一","2周二","3周三"......
  • DICOM标准:重要概念——多种传输语法、私有数据元素标签、唯一标识符(UID)等详解
    1私有数据元素标  1.1 私有数据元素标签(PrivateDataElementTags)        在DICOM标准中,多个实现者可能会定义带有相同(奇数)组号码的私有数据元素标签。为了避免冲突,私有元素根据以下规则分配私有数据元素标签:  a)私有创作者数据元素的分配 编号为(gggg......
  • TPAMI 2024 | NICEST:用于鲁棒场景图生成的噪声标签修正与训练
    题目:NICEST:NoisyLabelCorrectionandTrainingforRobustSceneGraphGenerationNICEST:用于鲁棒场景图生成的噪声标签修正与训练作者:LinLi;JunXiao;HanrongShi;HanwangZhang;YiYang;WeiLiu;LongChen摘要几乎所有现有的场景图生成(SGG)模型都忽视......
  • JavaScript的对象事件监听处理,交互式网页的关键!
    目录一、对象的事件二、常用的事件及处理1、鼠标事件(1) mousedown事件(2) mouseup事件(3) click事件(4)dblclick事件(5)mouseenter事件(6)mouseleave事件(7)wheel事件2、键盘事件(1)keydown事件(2)keyup事件3、表单事件(1)概念 (2)先设置一个简单的表单(3)获取表单节点(4)添加表......
  • 基于django框架开发在线书店推荐系统 python实现个性化网上书店/图书购物商城推荐网站
    基于django框架开发在线书店推荐系统python实现个性化网上书店/图书购物商城推荐网站爬虫、兴趣标签、排行榜标签推荐、热点推荐、协同过滤算法推荐大数据深度学习机器学习人工智能WebBookShopRecPy一、项目简介1、开发工具和使用技术Pycharm、Python3及以上版本,D......
  • 三周精通FastAPI:30 API、标签元数据和文档 URL
    官方文档:https://fastapi.tiangolo.com/zh/tutorial/metadata/API元数据和文档URL¶你可以在FastAPI应用程序中自定义多个元数据配置。API元数据¶你可以在设置OpenAPI规范和自动API文档UI中使用的以下字段:参数类型描述titlestrAPI的标题。summarystrAPI的简......
  • PbootCMS模板调用友情链接标签代码
    适用范围:全站任意地方标签作用:用于依次输出指定分组的友情链接调用代码:html {pboot:linkgid=*num=*}<ahref="[link:link]"title="[link:name]"><imgsrc="[link:logo]"></a>{/pboot:link}控制参数:gid=*:分组,必填num=*:数量,非必填,默认为10个可使用的列表......
  • PbootCMS模板调用幻灯片轮播图标签
    幻灯片轮播图列表:{pboot:slidenum=3gid=1}<ahref="[slide:link]"target="_blank"><imgsrc="[slide:src]"alt="[slide:title]"/></a>{/pboot:slide}控制参数:gid=*:分组,必填。num=*:数量,非必填,默认为5个。可用列表标......