在react-router 2.0.0中使用自定义历史记录的问题

时间:2016-03-17 11:13:37

标签: reactjs react-router

具体来说我想使用" basename"选项,所以我可以在子目录中运行我的应用程序。

我有以下代码来设置历史记录。

var createHistory = require('history').createHistory;
var useRouterHistory = require('react-router').useRouterHistory;
var browserHistory = useRouterHistory(createHistory)({
    basename: "/subfolder"
});

然后我有以下路由来配置

<Router history={browserHistory} className="react-container">
    <Route path="/" component={Template}>
        <IndexRoute component={Diary} />
        <Route path="diary(/:zoom)" component={Diary} />
        <Route path="login" component={Login} />
    </Route>
</Router>

我可以使用以下方式在组件本身中没有任何问题地进行路由:

this.context.router.push('login');

但是当我尝试在助焊剂商店推出一条新的历史路线时,它并不起作用。它会将地址栏中的URL更改为正确的值,但组件不会更改。 我可以刷新页面并按预期加载。

例如我可以使用:

//require browser history in store
var browserHistory = require('react-router').browserHistory;
....
//after login
browserHistory.push('/');

我希望&#34; Diary&#34;要加载的组件,而是将URL更改为/ subfolder,组件保留为登录页面。

如果我只使用

,路由都能正常工作
require('react-router').browserHistory

而不是自定义代码,但我不能像我需要的那样在子目录中运行应用程序。

提前感谢您提供的任何帮助和提示。 克里斯

2 个答案:

答案 0 :(得分:2)

在Flux商店中,您需要确保使用为路由器设置的相同历史记录对象。

答案 1 :(得分:0)

我现在和react-router@2.8.1

有完全相同的问题

地址栏中的网址更新正确,但UI上没有任何内容。如果我点击F5,它将起作用

还在调查这个......