Vue3优雅地监听localStorage变化

目录

💡前言 

💡 为什么要这样做?

💎 思路

💎 实现

🚗 实现中介者模式

🚗 重写localStorage

🚗 实现useStorage hook

💎 测试

🚗 使用localStorage

🚗 监听localStorage变化

🚗 结果


💡前言 

        最近在研究框架,也仔细用了Vue3一些功能,今天分享一次我的实践:

💡 为什么要这样做?

        原生的localStorage只能监听同源地址下不同页面的localStorage变化,作为单页面应用,显然不实用。所以我打算自定义一个hook监听localStorage的变化。

💎 思路

        首先我们需要重写localStorage下的所有方法,这样在每个方法被使用的时候就可以被监听到了。

        此时就需要一个事件机制,用于传递消息。

        在Vue3移除了$on$emit事件接口后,我们可以借助第三方库实现:mitttiny-emitter.

        不过我打算使用自己实现的中介者模式作为通信方法。

💎 实现

🚗 实现中介者模式

// mediator.ts
export interface MediatorProps {
  uuid?: number;
  publish?: (topic: string, ...args: unknown[]) => void;
  subscribe?: (topic: string, callback: (...args: unknown[]) => void) => void;
}

const mediator = (function () {
  let topics = [],
    uuid = 0;

  function subscribe(top
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

chengbo_eva

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值