【发布时间】:2016-03-17 11:13:36
【问题描述】:
具体来说,我想使用“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('/');
我希望加载“日记”组件,但它会将 URL 更改为 /subfolder,并且该组件仍保留为登录页面。
如果我只是使用,路由一切正常
require('react-router').browserHistory
而不是自定义代码,但是我不能像我需要的那样在子目录中运行应用程序。
提前感谢您能给我的任何帮助和提示。 克里斯
【问题讨论】:
标签: reactjs react-router