如何在Electron中使用`react-router`从组件外部进行路由?

时间:2016-02-01 02:03:42

标签: react-router electron

我在Electorn中遇到react-router的问题是我不能做window.location = '/'之类的事情,因为电子应用中的window.location指向主脚本的文件系统级路径。

我知道react-router的官方文件说

// history.js
import createBrowserHistory from 'history/lib/createBrowserHistory'
export default createBrowserHistory()

// index.js
import history from './history'
render(<Router history={history}/>, el)

// actions.js
import history from './history'
history.replaceState(null, '/some/path')

但是调用history.replaceState()在我的应用中什么也没做。

最可疑和最奇怪的部分是虽然我使用createBrowserHistory作为路由器历史记录window.location打印哈希路径。

基于历史记录的路由是否存在电子特定问题?如果没有,为什么调用history.replaceState(null, '/')不会改变路线?

1 个答案:

答案 0 :(得分:1)

从react-router 1.0.3开始使用哈希历史记录:

// history.js
import createHashHistory from 'history/lib/createHashHistory';
export default createHashHistory();

渲染:

// index.js
import history from './history'
render(<Router history={ history }/>, el);

路线如下:

// action.js
import history from './history';
history.replaceState(null, '/some/path');

请阅读doc了解详细信息。