【问题标题】:Routing doesn't work on packaged Electron app using ReactJS and reach-router路由不适用于使用 ReactJS 和reach-router 打包的 Electron 应用程序
【发布时间】:2019-01-02 17:59:48
【问题描述】:

我已经成功地使用电子成功打包了一个 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;

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

【问题讨论】:

    标签: reactjs electron reach-router


    【解决方案1】:

    好的,我在 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>
    )
    

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

    【讨论】:

    • 只是为了说明(正如我所学的那样)——那些 createMemory()createHistory() 调用必须在任何组件之外!
    猜你喜欢
    • 1970-01-01
    • 2016-05-05
    • 2017-05-19
    • 2019-03-22
    • 1970-01-01
    • 2017-08-31
    • 1970-01-01
    • 1970-01-01
    • 2021-08-17
    相关资源
    最近更新 更多