Maison  >  Questions et réponses  >  le corps du texte

Comment empêcher React/Electron de réécrire les requêtes GET

J'utilise React et Electron pour créer une application native et je souhaite transmettre un chemin de fichier de mon processus Electron principal à l'un de mes composants React pour afficher le HTML dans le fichier. J'ai décidé de le faire en utilisant des URL, j'ai donc utilisé la route suivante :

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>
  );
}

Ensuite, j'utilise ceci dans le composant GraphApp pour obtenir le HTML :

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

Cependant, lorsque j'exécute cette commande, j'obtiens le résultat suivant : 将 GET /index.html/3D-Graph/?graph-path=3D-Graph 重写为 /index.html

Je ne sais pas si cela est fait par Electron lorsque j'utilise la fonction loadURL, ou si cela est fait par React lors de son processus de routage. Comment puis-je l’empêcher de le faire afin de pouvoir acheminer l’application ? Ou est-ce que j'aborde les choses de la mauvaise manière ?

P粉426780515P粉426780515430 Il y a quelques jours548

répondre à tous(1)je répondrai

  • P粉504080992

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

    J'ai envoyé le chemin du fichier depuis main dans le passé comme ceci :

    Principal :

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

    ou :

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

    Rendu :

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

    J'espère que cela vous aidera ! La majuscule est un peu bizarre, je l'ai écrite en utilisant la correction automatique sur mon téléphone :)

    répondre
    0
  • Annulerrépondre