reactjs - 在react-router 2.0.0中使用自定义历史记录时出现问题

标签 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('/');

我希望加载“日记”组件,但它会将 URL 更改为/subfolder,并且该组件仍保留为登录页面。

如果我只是使用,路由一切正常

require('react-router').browserHistory

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

预先感谢您给我的任何帮助和提示。 克里斯

最佳答案

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

关于reactjs - 在react-router 2.0.0中使用自定义历史记录时出现问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36058896/

相关文章:

javascript - react-native-router-flux 具有替换、重置和刷新功能的刷新组件

reactjs - 单击按钮时 React setState() 不更新状态

reactjs - 使用 Enzyme 浅层而不是安装来测试使用 useEffect 的组件

javascript - react axios.get 不工作它说编译失败

reactjs - React 数据网格过滤器默认启用(并打开)

javascript - 使用多下拉菜单时获取 react 选择选项

reactjs - React路由器+iis?如何启用路由

javascript - React-router:传递多个组件会导致不变违规错误

javascript - 在 react-router 4 中使用 anchor 标签

javascript - 如何在不重定向的情况下提交 HTML 表单?