【问题标题】:Electron app not working with React-Router using browserHistory电子应用程序无法使用 browserHistory 与 React-Router 一起使用
【发布时间】:2016-05-27 02:44:32
【问题描述】:

我有一个使用 React-Router 的 React 应用程序,我将它嵌入到一个 Electron 应用程序中。使用hashHistory 时效果很好,但是当我切换到browserHistory 时,没有任何效果(例如,页面根本无法加载)。没有错误或任何东西,只是一个空白页和一个noscript 加载到根目录中。任何想法为什么会这样?

编辑: 以前版本的 React-Router 和我刚刚更新到 (2.0.0) 的版本就是这种情况。还使用最新的稳定版 React。

【问题讨论】:

  • 关于您如何解决此问题的任何更新?当我尝试使用 react-router 时,我得到 Warning: [react-router] Location "/" did not match any routes :/
  • 我永远无法让这个工作,只是假设这是我的事。我最终做的是声明一个全局变量,这样我就知道我何时在电子应用程序中,然后根据该变量将 browserHistoryhashHistory 传递给 RR。
  • 看看这是否有帮助:stackoverflow.com/questions/36505404/…

标签: reactjs react-router electron


【解决方案1】:

因为browserHistory只用于http web,所以electron.BrowserWindow.loadURL('http://localhost:8080')

但是hashHistory用于本地文件和http web,所以electron.BrowserWindow.loadURL('file:path')

【讨论】:

  • 您能解释一下为什么browserHistory 不能与file: 合作吗?
  • @Skywalker13 抱歉,我只知道这是浏览器规则。
【解决方案2】:

我看不到您的代码,但我的 browserHistory 工作正常。 我的 package.json 依赖项:

"history": "^1.13.0"

然后在我的 main.js 中:

import React from 'react';
import ReactDOM from 'react-dom';
import {Router,Route} from 'react-router';
import createBrowserHistory from 'history/lib/createBrowserHistory'
import route from './route';

let history = createBrowserHistory();
ReactDOM.render((
  <Router history={history}>
    {route}
  </Router>
),document.getElementById('app'));

请忽略我的 route.js 文件

【讨论】:

  • 在 RR 2.0.0 中,您可以直接从 RR 导入 browserHistory,我正在这样做。它使用history@2.0.0
  • @RubenMartinezJr。抱歉,我忽略了你的 RR 版本。刚才试了RR 2.0,直接从RR导入了browserHistory,项目运行正常,页面可以正确重新加载,一切正常,URL为restful风格。您的页面根本无法加载,可能在其他地方发生了一些错误。我的测试项目在这里:https://github.com/ThinkCats/React-Router-Starter,希望对你有所帮助。
【解决方案3】:

也许升级历史?

"history": "^1.17.0",

【讨论】:

  • history 包在我的项目中为 2.0.0。
  • 他们对 api 的改动太大了,希望 2.0.0 没有那么多改动
猜你喜欢
  • 2018-08-11
  • 2018-01-15
  • 1970-01-01
  • 2016-02-06
  • 1970-01-01
  • 2020-03-27
  • 2017-09-13
  • 2016-06-01
  • 1970-01-01
相关资源
最近更新 更多