当前位置: 首页 > 知识库问答 >
问题:

如何在react路由器2.0.0-rc5中获取当前路由

芮安顺
2023-03-14

我有一个路由器像下面:

<Router history={hashHistory}>
    <Route path="/" component={App}>
        <IndexRoute component={Index}/>
        <Route path="login" component={Login}/>
    </Route>
</Router>

以下是我想要实现的目标:

  1. 如果未登录,将用户重定向到/login
  2. 如果用户在登录后试图访问/login,请将其重定向到root/

因此,现在我尝试在应用程序的组件didmount中检查用户的状态,然后执行如下操作:

if (!user.isLoggedIn) {
    this.context.router.push('login')
} else if(currentRoute == 'login') {
    this.context.router.push('/')
}

这里的问题是我找不到获取当前路由的API。

我发现这个已解决的问题建议使用Router.ActiveState mixin和route处理程序,但这两个解决方案现在似乎已被弃用。


共有3个答案

彭海阳
2023-03-14

如果使用历史记录,则路由器会将历史记录中的所有内容放入该位置,例如:

this.props.location.pathname;
this.props.location.query;

了解了?

乐正浩博
2023-03-14

你可以得到当前的路线使用

const currentRoute = this.props.routes[this.props.routes.length - 1];

…这使您可以从最低级别的活动

鉴于...

<Route path="childpath" component={ChildComponent} />

当前oute.path返回'子路径当前oute.component返回函数_class(){...}

景信瑞
2023-03-14

在阅读了更多的文档后,我找到了解决方案:

https://github.com/ReactTraining/react-router/blob/master/packages/react-router/docs/api/location.md

我只需要访问组件实例的注入属性位置,如:

var currentLocation = this.props.location.pathname
 类似资料:
  • 问题内容: 我有一个如下的路由器: 这是我要实现的目标: 将用户重定向到(如果未登录) 如果用户在已经登录时尝试访问,请将其重定向到root 所以现在我想以检查用户的状态的,然后做一些事情,如: 这里的问题是我找不到获取当前路由的API。 我发现建议使用Router.ActiveState mixin和路由处理程序来解决此已关闭的问题,但是现在似乎已弃用了这两个解决方案。 问题答案: 阅读更多文档

  • 如何使用react router v4获取当前路径? 我尝试了以下方法,但没有成功: 错误: 这是我的Routes.js文件:

  • 问题内容: 我想显示在以某种方式从目前的路线通过。 在React Router v4中,如何将当前路由传递到prop中? 有没有办法通过从自定义自定义标题上? 问题答案: 在5.1版本的react-router中,有一个名为 useLocation 的钩子,该钩子返回当前的位置对象。每当您需要知道当前URL时,这可能都会有用。

  • 在此URL中: 我想抓,当然是在路由里面。这工作很棒: 但是我想访问任何路由之外的路径以及文件如下:

  • 问题内容: 在实现持久性底部栏时,单击底部栏中的按钮时,需要恢复以前的路线。 单击底部栏中的按钮时,将保存其当前路径路径(/ a / b / c ),并根据该按钮单击恢复先前保存的路径。 从概念上讲,用户会将每个按钮视为一个工作区,并且其状态永远不会丢失(包括后退堆栈)。用户可以安全地从一个工作区切换到另一个工作区。 当路由重绕到根时,如何在Flutter中获取当前路由路径? 问题答案: 不会公开