我想在
在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
传递自定义标题
如果你使用的是反应的模板,你的反应文件的结尾看起来像这样:导出默认的一些组件,你需要使用高阶组件(通常称为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
在响应路由器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;
}
}
在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和路由处理程序来解决此已关闭的问题,但是现在似乎已弃用了这两个解决方案。 问题答案: 阅读更多文档