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

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

相关文章:

  • 找不到包的老版本???scikit-learn,numpy,scipy等等!!
  • fpga系列 HDL: 竞争和冒险 01
  • arcgis中dem转模型导入3dmax
  • sql-labs靶场第二十关测试报告
  • 日常记录,使用springboot,vue2,easyexcel使实现字段的匹配导入
  • 0基础学java之Day14
  • python的文件常识
  • CTF-RE 从0到N:开始之前-c函数手册
  • 什么样的JSON编辑器才好用
  • TDengine 签约新奥新智:写入速度提升10倍,成本降低90%
  • 软件设计师----UML
  • JavaWeb合集16-JWT令牌验证
  • Coppelia Sim (v-REP)仿真 机器人3D相机手眼标定与实时视觉追踪 (一)
  • 【Sublime Text】设置中文 最新最详细
  • 【Android】Convenient ADB Commands
  • jupyter notebook改变默认启动路径
  • C++:map和set类
  • SQLITE排序
  • Vision Transformer 神经网络在水果、动物、血细胞上的应用【深度学习、PyTorch、图像分类】
  • 【web安全】缓慢的HTTP拒绝服务攻击详解
  • 从零开始:Python与Jupyter Notebook中的数据可视化之旅
  • 从PDF文件中提取数据
  • 理解深度学习模型——高级音频特征表示的分层理解
  • 【Linux系统】如何证明进程的独立性
  • 追寻数组的轨迹,解开算法的情愫
  • 【CCL】浅析 CFX Command Language