我正在尝试使用特定路线打开一个新窗口,但似乎路线页面未正确加载。新的电子窗口是从 FrmApprovalMain.js 打开的,新窗口应该用 FrmPOdet.js 打开但是,当它打开时,会出现一个错误,该错误似乎源于调用文件(FrmApprovalMain.js),但没有什么可一旦打开新窗口,就用新窗口做…… mainWIndow 很好,但新打开的窗口抛出一个错误(FrmPOdet.js 上只有一个按钮)。
这是我在新窗口中得到的错误(mainWindow 没有错误):
Module../src/FrmApprovalMain.js
G:/Electron/poa/src/FrmApprovalMain.js:10
7 | import NumberFormat from 'react-number-format';
8 | import ModalMessage from './componentAPI/ModalMessage'
9 | import SpinnerCentre from './componentAPI/SpinnerCentre'
> 10 | const electron = window.require('electron');
11 | const ipcRenderer = electron.ipcRenderer;
12 |
13 |
Run Code Online (Sandbox Code Playgroud)
,这些是我在应用程序中的陈述:
打开新窗口的语句 (FrmApprovalMain.js)
const electron = window.require('electron');
const ipcRenderer = electron.ipcRenderer;
[...]
openPO(){
console.log("Open new window")
ipcRenderer.send('openNewPO', "S");
console.log("New Window Opened")
}
Run Code Online (Sandbox Code Playgroud)
在电子中,我创建了一个新的 IPC 侦听器,我在其中创建了新窗口:
ipcMain.on('openNewPO',(events,args) =>{
const win = new BrowserWindow({
parent: mainWindow,
height: 600,
width: 800,
show: true,
});
win.removeMenu();
win.loadURL("http://localhost:3000/podet");
});
Run Code Online (Sandbox Code Playgroud)
路由器是这个
import App from './App';
import FrmPODet from './FrmPODet'
const Router = () => (
<HashRouter>
<Switch>
<Route exact path = "/podet" component = {FrmPODet} />
<Route exact path = "/" component = {App} />
</Switch>
</HashRouter>
);
Run Code Online (Sandbox Code Playgroud)
FrmPODet 有一个按钮
终于解决了,问题出在HashRouter vs BrowserRouter的使用上。HasRouter 适用于客户端应用程序(生产),但在开发中不起作用(开发中的服务器端方法),因此我不得不对开发和生产使用不同的语句。
我的 Router.js 现在看起来像这样:
const Router = () => {
if (!process.env.NODE_ENV || process.env.NODE_ENV === 'development'){
return (
<BrowserRouter>
<Switch>
<Route exact path = "/" component = {App} />
<Route exact path = "/Podet" component = {FrmPODet} />
</Switch>
</BrowserRouter>)
} else {
return (
<HashRouter>
<Switch>
<Route exact path = "/" component = {App} />
<Route exact path = "/Podet" component = {FrmPODet} />
</Switch>
</HashRouter>)
}
};
Run Code Online (Sandbox Code Playgroud)
我的 loadURL 是:
win.loadURL(
isDev
? "http://localhost:3000/Podet"
: `file://${path.join(__dirname, "../build/index.html#Podet")}`
);
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
773 次 |
| 最近记录: |