Rumah  >  Soal Jawab  >  teks badan

Bagaimana untuk menghentikan React/Electron daripada menulis semula permintaan GET

Saya menggunakan React dan Electron untuk mencipta apl asli dan saya ingin menghantar laluan fail daripada proses Electron utama saya kepada salah satu komponen React saya untuk memaparkan HTML dalam fail. Saya memutuskan untuk melakukan ini menggunakan URL, jadi saya menggunakan laluan berikut:

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

Kemudian saya menggunakan ini dalam komponen GraphApp untuk mendapatkan HTML:

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

Walau bagaimanapun, apabila saya menjalankan arahan ini, saya mendapat output berikut: 将 GET /index.html/3D-Graph/?graph-path=3D-Graph 重写为 /index.html

Saya tidak tahu sama ada ini dilakukan oleh Electron apabila saya menggunakan fungsi loadURL, atau jika ia dilakukan oleh React semasa proses penghalaannya. Bagaimanakah cara saya menghentikannya daripada melakukan ini supaya saya boleh menghalakan aplikasi? Atau adakah saya mendekati ini dengan cara yang salah?

P粉426780515P粉426780515430 hari yang lalu550

membalas semua(1)saya akan balas

  • P粉504080992

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

    Saya telah menghantar laluan fail dari utama pada masa lalu seperti ini:

    Utama:

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

    atau:

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

    Rendering:

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

    Semoga ini membantu! Huruf besarnya agak pelik, saya menulisnya menggunakan autocorrect pada telefon saya :)

    balas
    0
  • Batalbalas