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

给localStorage缓存添加全局监听器

需求:在做单应用页面的时候,每个组件都是独立的,有时候我们a组件里面的东西修改了,需要b组件进行在a组件修改的同时进行响应,就需要监听器,这种时候我们需要定义监听器并且在b组件里面监听,然后在a组件触发

监听器:可以单独定义一个监听器(事件分发类),也可以用原生提供的,或者直接绑在localStorage上面,这里说下帮在localStorage上面的吧,比较快捷方便

定义监听器(全局):

const originalSetItem = localStorage.setItem;localStorage.setItem = function (key, value) {const event: any = new Event('itemInserted');event.value = value; // Optional..event.key = key; // Optional..document.dispatchEvent(event);// @ts-ignore// eslint-disable-next-lineoriginalSetItem.apply(this, arguments);
};

a组件 触发监听器

localStorage.setItem('collapsed', collapsed ? '0' : '1');

b组件 监听事件分发监听器

//监听事件
const localStorageSetHandler = function (e: any) {// localStorageif (e.key === 'collapsed') {//这里接受到了监听触发。做想要处理的事情}
};
document.addEventListener('itemInserted', localStorageSetHandler, false);
return () => {//组件移除需要把事件给移除掉document.removeEventListener('itemInserted', localStorageSetHandler);
};

这样就可以简单的实现全局事件分发了。如果想要更精细点的话可以自己定义一个监听类来实现

不过个人不建议经常使用分发器 来做业务处理,除非是只有这种办法了,因为分发器是全局的,会破环各个组件之间的独立性;单页面应用应该遵循组件独立,模块独立原则,尽量不要互相有关联,(高内聚低耦合)才能让项目在后期更好维护。

http://www.lryc.cn/news/241335.html

相关文章:

  • blk_mq_init_queue函数学习记录
  • 高防服务器的工作原理
  • 2023.11.19使用flask制作一个文件夹生成器
  • 【04】ES6:字符串的扩展
  • Docker可视化管理界面工具Portainer安装
  • css实现水波纹效果
  • 一种全新且灵活的 Prompt 对齐优化技术
  • 8:kotlin 类型检查和转换(Type checks and casts)
  • 命令模式 (Command Pattern)
  • 蓝桥杯官网练习题(奇怪的数列)
  • flink的异常concurrent.TimeoutException: Heartbeat of TaskManager with id的解决
  • 火电安全事故vr模拟仿真培训强交互更真实
  • ELK企业级日志分析平台
  • .NET面试题1
  • mongodb 日志详情
  • Oracle中文显示???????解决办法
  • Java查询数据放入word模板中并在前端导出下载
  • HarmonyOS ArkTS 应用添加弹窗(八)
  • 排序算法-----快速排序(非递归实现)
  • el-input限制输入整数等分析
  • 医院手术麻醉信息系统全套源码,自主版权,支持二次开发
  • canvas扩展001:利用fabric绘制图形,可以平移,旋转,放缩
  • 什么是机器学习
  • 电子桌牌如何赋能数字化会务?以深圳程序员节为例。
  • 打包和部署Java应用程序:Maven和Shell脚本的实用方法
  • Windows Python3安装salt模块失败处理
  • RabbitMQ 消息队列编程
  • 基于安卓android微信小程序的个人管理小程序
  • 免费图书教材配套资料:Spark大数据技术与应用(第2版)
  • SecureCRT9汉化版安装