路由不适用于使用 ReactJS 和reach-router 的打包 Electron 应用程序

x86*_*-64 2 reactjs electron reach-router

我已经成功使用电子完成了 React 应用程序的打包。它运行良好并加载主页,但当我尝试路由时,它根本不起作用。我在我的项目中使用了reach-router,我猜我必须为此目的调整我的路由配置。

仅供参考,这不是我发出的网络请求,它只是从主页路由到不需要 API 调用的登录页面。但什么也没发生。

import { Router } from '@reach/router';
const App = () => (
    <Provider store={STORE}>
      <Main>
        <Router>
           <Home default path="/" />
           <Login path="login" />
        </Router>
      </Main>
   </Provider>
);


export default App;
Run Code Online (Sandbox Code Playgroud)

有关于如何使用react-router解决此问题的帮助,但互联网上没有关于reach-router的信息。

x86*_*-64 6

好吧,我在 Github 上遇到了这个问题,建议的解决方案按预期工作: https: //github.com/reach/router/issues/25

这个想法是使用内存历史记录(因为reach不支持哈希)。为此目的,Reach 公开了 createMemorySource、createHistory 和 LocationProvider。

let source = createMemorySource("/starting/url")
let history = createHistory(source)

let App = () => (
  <LocationProvider history={history}>
    <Router>
      {/* ... */}
    </Router>
  </LocationProvider>
)
Run Code Online (Sandbox Code Playgroud)

Reach-router 文档建议创建内存源是为了开发目的,但它非常适合 Electron 用例。我希望这对将来的人有帮助。