electron 多窗口 vuex/pinia 数据状态同步简易方案(利用 LocalStorage)

全局 stroe 添加 mutations 状态同步方法

ts 复制代码
  // 用于其他窗口同步 vuex 中的 DeviceTcpData
  asyncDeviceTcpData(state: StateType, data: any) {
    state.deviceTcpData = data
  },

App.vue 里

ts 复制代码
onMounted(() => {
  console.log("App mounted");
  /**
   * vuex 多窗口 store 同步
   */
   // 1. 初始赋值
  // 从 localStorage 同步 tcp 上报的数据到 vuex
  const deviceTcpData = localStorage.getItem("deviceTcpData");
  if (deviceTcpData) {
    store.commit("asyncDeviceTcpData", JSON.parse(deviceTcpData));
  }
  // 2. 监听 storage 事件 同步 全局 state
  // 其他渲染进程,当设置进程进行修改storage的时候,其他进程可以根据storage变化来更改自己的store
  window.addEventListener("storage", () => {
    const deviceTcpData = localStorage.getItem("deviceTcpData");
    deviceTcpData &&
      store.commit("asyncDeviceTcpData", JSON.parse(deviceTcpData));
  });
  
    // 从主界面关闭时,清空本地存储的数据 (清除 localstorage 的时机)
  window.addEventListener("beforeunload", (e: any) => {
    if (route.name === "search") {
      localStorage.removeItem("deviceTcpData");
    }
  });
});

关键: 利用 watch 监听全局 state 的变动,每次变动,进行 localStorage 同步

ts 复制代码
// 监听 全局 store 的变动
watch(
  () => store.state.deviceTcpData,
  (val) => {
    console.log("watch 触发");
    console.log(val);
    localStorage.setItem("deviceTcpData", JSON.stringify(val));
  },
  {
    deep: true,
  }
);

缺点: 数据量大时,消耗性能较高。可用作少量数据的同步方案;

相关推荐
江米小枣tonylua5 天前
升级到 Prisma 7:“Rust 除锈” 带来的意外红利
electron
还好还好不是吗8 天前
MatrixMedia v0.10.x 更新:B站封面自定义 + 二开指南,开源项目的开发者体验再升级
electron·开源
习明然9 天前
我的本地化AI项目(三)
人工智能·python·electron·c#·avalonia
Hyyy10 天前
为什么 macOS 应用一换 Bundle ID,之前授予的权限就全失效了?
macos·electron
月走乂山12 天前
Anything Analyzer MCP 401 Unauthorized 故障排查
electron·故障排查·mcp·claude code·anything analyzer
熊猫钓鱼>_>12 天前
Electron:当 Web 技术统治桌面
大数据·前端·javascript·人工智能·架构·electron·agent
程序员老刘12 天前
Opencode从Tauri切回Electron,桌面端技术选型别被体积陷阱带偏了
electron·ai编程
大意的百合12 天前
Electron 应用如何上架微软商店:从 MSIX 打包到商店提交
javascript·microsoft·electron
专职13 天前
electron中拖动文件到桌面案例
前端·javascript·electron
SRET14 天前
Mineradio 沙盒隔离安装完全指南 | 一键安全运行 Electron 应用!!!
javascript·经验分享·安全·electron·aigc·音视频·ai编程