具体来说我想使用" 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
而不是自定义代码,但我不能像我需要的那样在子目录中运行应用程序。
提前感谢您提供的任何帮助和提示。 克里斯
答案 0 :(得分:2)
在Flux商店中,您需要确保使用为路由器设置的相同历史记录对象。
答案 1 :(得分:0)
我现在和react-router@2.8.1
有完全相同的问题地址栏中的网址更新正确,但UI上没有任何内容。如果我点击F5,它将起作用
还在调查这个......