如何让React Router基本名称工作

时间:2016-10-03 22:46:32

标签: reactjs react-router history.js

我正在尝试让我的反应应用程序在IE Edge浏览器中处理文件系统。到目前为止,我已经走到了这一步。

import { createHistory, useBasename } from 'history'
let appHistory = useBasename(createHistory)({
    basename: '/build'
});
<Router history={appHistory}>
<Route path={window.location.pathname} component={App}>

这样我实际上可以看到一个页面渲染,但路由不起作用 我也在Edge浏览器文件中获得了这条路径:/// C:/ C:/ ...等等为什么它有两个C:/'s?

在Chrome中我收到此错误

  

未捕获DOMException:无法在“历史记录”上执行“pushState”:A   URL“file:/// C:/ build / windows”的历史状态对象不能   在原始文件“null”和URL的文档中创建   '文件:/// C:/src/myproject/build/index.html'。

1 个答案:

答案 0 :(得分:2)

您应该使用useRouterHistory代替useBaseName

import { Router, Route, useRouterHistory } from 'react-router'
import createBrowserHistory from 'history/lib/createBrowserHistory'

const history = useRouterHistory(createBrowserHistory)({
    basename: '/dist'
});

<Router history={history}>
    <Route path="/" component={App} />
</Router>