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

React路由器v4-如何获取当前路由?

晏鸿畅
2023-03-14

我想在

在React路由器v4中,

  <Router basename='/app'>
    <main>
      <Menu active={menu} close={this.closeMenu} />
      <Overlay active={menu} onClick={this.closeMenu} />
      <AppBar handleMenuIcon={this.handleMenuIcon} title='Test' />
      <Route path='/customers' component={Customers} />
    </main>
  </Router>

有没有办法从on上的自定义prop传递自定义标题


共有3个答案

狄兴邦
2023-03-14

如果你使用的是反应的模板,你的反应文件的结尾看起来像这样:导出默认的一些组件,你需要使用高阶组件(通常称为HOC),with路由器

首先,你需要导入with路由器如下所示:

import {withRouter} from 'react-router-dom';

接下来,您将要使用路由器的。可以通过更改组件的导出来完成此操作。您可能希望从export default ComponentName更改为export default with router(ComponentName)

然后你可以从道具上获得路线(和其他信息)。具体来说,位置匹配,以及历史。吐出路径名的代码是:

console.log(this.props.location.pathname);

此处提供了一份包含其他信息的良好书面文件:https://reacttraining.com/react-router/core/guides/philosophy

常永长
2023-03-14

在响应路由器4中,当前路由在-this.props.location.pathname。只需获取this.props并验证。如果您仍然没有看到location.pathname,那么您应该将装饰器与路由器一起使用。

这可能看起来像这样:

import {withRouter} from 'react-router-dom';

const SomeComponent = withRouter(props => <MyComponent {...props}/>);

class MyComponent extends React.Component {
  SomeMethod () {
    const {pathname} = this.props.location;
  }
}
潘嘉佑
2023-03-14

在react-router的5.1版本中,有一个名为usePlace的钩子,它返回当前位置对象。这在您需要知道当前URL的任何时候都可能有用。

import { useLocation } from 'react-router-dom'

function HeaderView() {
  const location = useLocation();
  console.log(location.pathname);
  return <span>Path : {location.pathname}</span>
}

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

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

  • 我有一个路由器像下面: 以下是我想要实现的目标: 如果未登录,将用户重定向到 如果用户在登录后试图访问,请将其重定向到root 因此,现在我尝试在

  • 我在从React路由器v3迁移到v4时遇到了一些小问题。在v3中,我可以在任何地方执行此操作: 如何在v4中实现这一点。 我知道,当您在组件中时,我可以使用hoc、react context或event router道具。但我不是这样。 我正在寻找v4中组件的外部导航的等价性

  • 我在想这样的事情: 前台有一个不同的布局和风格与管理区域。所以在frontpage中的路由是home、about等等,其中一个应该是子路由。 /home应该呈现到Frontpage组件中,而/admin/home应该呈现在后端组件中。 最终解决方案: 这是我现在使用的最终解决方案。这个例子也像传统的404页面一样有一个全局错误组件。

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