reactjs - React router v4 嵌套路由相对路径

标签 reactjs react-router

我有一个带有react router v4到另一个组件的组件,我想在第二个组件中添加另一个路由。

这是主要路线:

const Dashboard = () => {
  return (
    <div>
      <Header/>
      <Router>
        <div>
          <Route path="/" exact component={Wall} />
          <Route path="/challenge/:id" component={Challenge} />
        </div>
      </Router>
    </div>
  )
}

这是挑战部分:

class Challenge extends Component {
  ...

  render() {
    return (
      ...
        <Router>
          <div>
            <Route path="/overview" exact component={Overview} />
            <Route path="/discussions" exact component={Discussions} />
          </div>
        </Router>
      ...
    )
  }
}

这对我不起作用..

唯一有效的选择是将/challenge/:id 包含在挑战组件中:

<Route path="/challenge/:id/overview" exact component={Overview} />
<Route path="/challenge/:id/discussions" exact component={Discussions} />

最后我想让路线看起来像这样:

www.site.com/challenge/1/overview

www.site.com/challenge/1/discussions

但不包含每个嵌套路由中的完整路由。

最佳答案

在您的挑战组件中尝试一下:

class Challenge extends Component {
  ...

  render() {
    const { match } = this.props;
    return (
      ...
      <div>
        <Route path={`${match.url}/overview`} exact component={Overview} />
        <Route path={`${match.url}/discussions`} exact component={Discussions} />
      </div>
      ...
    )
  }
}

请注意,您不需要添加新的 Router 实例,因为您的 Challenge 组件是您定义的 Router 实例的后代在您的顶级 Dashboard 组件中。

关于reactjs - React router v4 嵌套路由相对路径,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47205721/

相关文章:

reactjs - 为什么选择 React.Children.only?

javascript - 如何在 react 组件中切换 mousedown/mouseup 类?

javascript - 为什么我不能调用 action 来调度?

javascript - NodeJS sendFile 从服务器返回空文件

reactjs - React-Router:在导航到不同的路由之前将逻辑应用于组件

javascript - React 无状态函数组件中的 if-else

javascript - react : Generate and save PDF onClick() problem - Kendo

reactjs - 防止 onmouseout 在子元素上触发

css - react : background image overlaps navbar

javascript - 如何在我自己的高阶组件 (HOC) 中使用 React Router 的 withRouter HOC?