Heim  >  Fragen und Antworten  >  Hauptteil

So verhindern Sie, dass React/Electron GET-Anfragen neu schreibt

Ich verwende React und Electron, um eine native App zu erstellen, und möchte einen Dateipfad von meinem Electron-Hauptprozess an eine meiner React-Komponenten übergeben, um HTML in der Datei zu rendern. Ich habe mich dafür entschieden, dies mithilfe von URLs zu tun, also habe ich die folgende Route verwendet:

export default function App() {
  return (
      <Router>
        <Routes>
            <Route path="/3D-Graph/*" element={
              <UserContext.Provider value={"3D-Graph"}>
                <GraphApp />
              </UserContext.Provider>
            } />

            <Route path="/" element={
              <UserContext.Provider value={"2D-Graph"}>
                <GraphApp />
              </UserContext.Provider>
            } />
        </Routes>
      </Router>
  );
}

Dann verwende ich dies in der GraphApp-Komponente, um den HTML-Code zu erhalten:

const htmlFile = new URLSearchParams(useLocation().search).get('graph-path')

Wenn ich jedoch diesen Befehl ausführe, erhalte ich die folgende Ausgabe: 将 GET /index.html/3D-Graph/?graph-path=3D-Graph 重写为 /index.html

Ich weiß nicht, ob dies von Electron durchgeführt wird, wenn ich die Funktion „loadURL“ verwende, oder ob es von React während des Routing-Prozesses durchgeführt wird. Wie kann ich das verhindern, damit ich die Anwendung weiterleiten kann? Oder gehe ich das falsch an?

P粉426780515P粉426780515379 Tage vor504

Antworte allen(1)Ich werde antworten

  • P粉504080992

    P粉5040809922023-09-09 12:55:41

    我过去从 main 发送过文件路径,如下所示:

    主要:

    win.webContents.send(”file-path-reply”, ”PATH TO YOUR FILE”)

    或者:

    ipcMain.on("eventFromRenderer", (event) => {
       event.sender.send(”file-path-reply”, ”PATH TO YOUR FILE”)
     }

    渲染:

    const MyComponent = () => {
    const [htmlPath, setHtmlPath] = useState(””);
    
    useEffect(() => {
     const reply = (evt, message) => {      
     setHtmlPath(message);
    }
    
    ipcRenderer.on(”file-path-reply”, reply);
    
    }, []);
    // use htmlPath…
    }

    希望这有帮助!大小写有点奇怪,我是在手机上使用自动更正功能写的:)

    Antwort
    0
  • StornierenAntwort