reactjs - 在 React Router 中设置相对路径

标签 reactjs react-router

当路由通过 React Router 中的组件时,有没有办法缩短路径长度?例如,在 App.js :

<Switch>
  <Route exact path="/" component={Landing} />
  <Route exact path="/login" component={Login} />
  <PrivateRoute path="/main" component={Main} />
  <Route component={NotFound} />
</Switch>

而在 Main.js成分:
<Switch>
    <Route exact path="/main" component={Dashboard} />
    <Route exact path="/main/users" component={Users} />
</Switch>

我可以以某种方式省略添加 /main之前 /main/users每次我在 Main成分?可以 /main设置为 /在该组件中还是我每次都必须明确键入完整路径?

我看到讨论非常相似的东西(例如: Does react-router support relative links? )但是路由器 有什么东西吗?路径 那可以配置吗? <Link to="users" />据说可以用,但我找不到 <Route path="users" />到。

最佳答案

react-router中没有“魔法”这将自动注入(inject)当前位置,但您可以使用 this.props.location 轻松完成。从 <Router /> 传递给组件:

所以如果你已经在 /main ,您可以将路径设置为:

<Switch>
  <Route exact path={`${this.props.location.pathname}`} component={Dashboard} />
  <Route exact path={`${this.props.location.pathname}/users`} component={Users} />
</Switch>

这将解决为:
<Switch>
  <Route exact path="/main" component={Dashboard} />
  <Route exact path="/main/users" component={Users} />
</Switch>

关于reactjs - 在 React Router 中设置相对路径,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/53711964/

相关文章:

javascript - 巴贝尔,Webpack,ES6, react : Importing module then passing imported module as prop to child

javascript - Material-UI:如何将 Drawer 组件置于 AppBar 下方

javascript - react : Render repeating elements from a child array based on the URL

javascript - 终极版;通过 combineReducers 使用组合化简器时访问状态的其他部分

javascript - 使用路由器时,使用 nginx 的 React 应用程序不会切换组件

reactjs - 导航链接上的 activeClassName 不起作用 - react

javascript - 如何在react-native中使用ImageBackground播放gif?

javascript - Reactjs Firebase Auth 电话注册流程?

javascript - 如何将带有 href 属性的元素与 React-router 结合使用?

reactjs - 如何管理React Router组件的布局