Electron - React - React Router 加载自定义路由(eg: example.com/#/popup)
Electron - React - React Router load custom route (eg: example.com/#/popup)
我在摆弄 react、react-router 和 electron,我创建了一个像这样的简单路由器:
export const Router: FC = () => {
return (
<HashRouter>
<Switch>
<Route exact path="/">
<IndexPage />
</Route>
<Route path="/stats">
<StatsPage />
</Route>
<Route path="/popup">
<PopupPage />
</Route>
</Switch>
</HashRouter>
);
};
我可以在我的浏览器和 electron 应用程序上看到所有路由没有问题,但有一个问题。如何使用 <ElectronBrowserWindow>.loadURL();
直接加载 /popup
页面?这是我拥有的:
popupWindow = new BrowserWindow({
width: 260,
height: 360,
x: 0,
y: 0,
resizable: false,
alwaysOnTop: true,
webPreferences: {
nodeIntegration: true,
enableRemoteModule: true,
devTools: false,
contextIsolation: false,
},
frame: false,
icon,
title: "Brawlhalla Stats",
});
popupWindow.loadURL(
isDev
? "http://localhost:3000/#/popup" // this one works
: `file://${path.join(__dirname, "../build/index.html?#/popup")}`, // this one not
);
感谢您的帮助:3
您将无法使用与 Electron 中的 HTTP URL 相同的语法加载基于哈希的条目文件 URL BrowserWindow
.
下面的模式应该有效:
popupWindow.loadURL(
isDev
? url.format({
protocol: 'file',
pathname: `${path.join(__dirname, "..", "build", "index.html#popup")}`
})
: "http://localhost:3000/#/popup"
);
好吧,我只是环顾四周,发现了同样的东西 post:
这是@IronWaffleMan 的回答:
基本上,我只需要输入 file://${path.join(__dirname, "../build/index.html#popup")}
我在摆弄 react、react-router 和 electron,我创建了一个像这样的简单路由器:
export const Router: FC = () => {
return (
<HashRouter>
<Switch>
<Route exact path="/">
<IndexPage />
</Route>
<Route path="/stats">
<StatsPage />
</Route>
<Route path="/popup">
<PopupPage />
</Route>
</Switch>
</HashRouter>
);
};
我可以在我的浏览器和 electron 应用程序上看到所有路由没有问题,但有一个问题。如何使用 <ElectronBrowserWindow>.loadURL();
直接加载 /popup
页面?这是我拥有的:
popupWindow = new BrowserWindow({
width: 260,
height: 360,
x: 0,
y: 0,
resizable: false,
alwaysOnTop: true,
webPreferences: {
nodeIntegration: true,
enableRemoteModule: true,
devTools: false,
contextIsolation: false,
},
frame: false,
icon,
title: "Brawlhalla Stats",
});
popupWindow.loadURL(
isDev
? "http://localhost:3000/#/popup" // this one works
: `file://${path.join(__dirname, "../build/index.html?#/popup")}`, // this one not
);
感谢您的帮助:3
您将无法使用与 Electron 中的 HTTP URL 相同的语法加载基于哈希的条目文件 URL BrowserWindow
.
下面的模式应该有效:
popupWindow.loadURL(
isDev
? url.format({
protocol: 'file',
pathname: `${path.join(__dirname, "..", "build", "index.html#popup")}`
})
: "http://localhost:3000/#/popup"
);
好吧,我只是环顾四周,发现了同样的东西 post:
这是@IronWaffleMan 的回答:
基本上,我只需要输入 file://${path.join(__dirname, "../build/index.html#popup")}