在 react-router 2.0.0 中使用自定义历史记录的问题
Problems using a custom history in react-router 2.0.0
具体来说,我想使用 "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');
但是当我尝试将新路由推送到 flux 存储中的历史记录时,它不起作用。它会将地址栏中的 URL 更改为正确的值,但组件不会更改。
我可以刷新页面并按预期加载。
例如我可以使用:
//require browser history in store
var browserHistory = require('react-router').browserHistory;
....
//after login
browserHistory.push('/');
我希望加载 "Diary" 组件,但它会将 URL 更改为 /subfolder,并且该组件保留为登录页面。
如果我只使用
,路由都可以正常工作
require('react-router').browserHistory
而不是自定义代码,但我无法 运行 像我需要的那样将应用程序放在子目录中。
提前感谢您给我的任何帮助和提示。
克里斯
在您的 Flux 存储中,您需要确保使用您为路由器设置的相同历史对象。
我现在遇到了与 react-router@2.8.1 完全相同的问题
地址栏中的 url 已正确更新,但 UI 上没有任何反应。如果我按 F5,它将起作用
仍在调查中....
具体来说,我想使用 "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');
但是当我尝试将新路由推送到 flux 存储中的历史记录时,它不起作用。它会将地址栏中的 URL 更改为正确的值,但组件不会更改。 我可以刷新页面并按预期加载。
例如我可以使用:
//require browser history in store
var browserHistory = require('react-router').browserHistory;
....
//after login
browserHistory.push('/');
我希望加载 "Diary" 组件,但它会将 URL 更改为 /subfolder,并且该组件保留为登录页面。
如果我只使用
,路由都可以正常工作require('react-router').browserHistory
而不是自定义代码,但我无法 运行 像我需要的那样将应用程序放在子目录中。
提前感谢您给我的任何帮助和提示。 克里斯
在您的 Flux 存储中,您需要确保使用您为路由器设置的相同历史对象。
我现在遇到了与 react-router@2.8.1 完全相同的问题
地址栏中的 url 已正确更新,但 UI 上没有任何反应。如果我按 F5,它将起作用
仍在调查中....