Răsfoiți Sursa

fix: 修复不刷新bug

banxia 4 săptămâni în urmă
părinte
comite
159254b80e
2 a modificat fișierele cu 9 adăugiri și 2 ștergeri
  1. 1 0
      electron/preload/electronAPI.ts
  2. 8 2
      src/pages/home/home.tsx

+ 1 - 0
electron/preload/electronAPI.ts

@@ -8,6 +8,7 @@ contextBridge.exposeInMainWorld("electronAPI", {
   send: (channel, data) => ipcRenderer.send(channel, data),
   on: (channel, callback) =>
     ipcRenderer.on(channel, (event, ...args) => callback(...args)),
+  removeAllListeners: (channel) => ipcRenderer.removeAllListeners(channel),
   getWindowWidth: () => ipcRenderer.invoke("get-window-info"),
   // 添加新的监听方法
   onNewNotification: (callback) =>

+ 8 - 2
src/pages/home/home.tsx

@@ -1,9 +1,10 @@
-import React, { useEffect, useState } from "react";
+import React, { useEffect, useRef, useState } from "react";
 import { useSearchParams } from "react-router-dom";
 import "./home.scss";
 
 const HomePage: React.FC = () => {
   const [searchParams] = useSearchParams();
+  const [key, setKey] = useState(0);
   const [path, setPath] = useState(() => {
     // 优先使用 URL 参数
     return (
@@ -18,13 +19,18 @@ const HomePage: React.FC = () => {
       (result: { type: string; data: string }) => {
         const { data } = result;
         setPath(data);
+        setKey(key + 1);
       }
     );
-  }, []);
+    return () => {
+      window["electronAPI"].removeAllListeners("iframe");
+    };
+  }, [key]);
 
   return (
     <div className="home">
       <webview
+        key={key}
         id="webview"
         allow-popups="true"
         allow-scripts="true"