reactjs - 使用 react 路由器渲染错误的组件

标签 reactjs react-router

当我尝试导航到以下网址 http://localhost:3000/alunos/adicionar-aluno 时,它使用空值而不是正确的组件 { FormAddStudent } 呈现组件 {Detail Student} 。 我是新手,所以不确定我做错了什么,我正在尝试使用确切的 Prop ,但没有成功。

这是代码:

  <Router>
  <CssBaseline />
  <div className="App" className={classes.root}>
    <Header />
    <MenuContainer />
    <Switch>
      <Route path="/" exact />
      <Route path="/alunos" exact component = { ListStudents }/>
      <Route path="/contratos" exact component = { ListContracts }/>
      <Route path="/turmas" exact component = { ListClasses }/>
      <Route path="/estagios" exact component = { ListInterships }/>
      <Route path="/formadores" exact component = { ListInstructors }/>
      <Route path="/analise-seguros" exact component = { ListInsurances }/>
      <Route path="/alunos/:id" component = { DetailStudent }/>
      <Route path="/alunos/adicionar-aluno"  exact component = { FormAddStudent }/>
    </Switch>
  </div>
</Router>

提前致谢!

最佳答案

React Router 从顶部开始寻找第一个匹配的路由。 exact 属性不会阻止 React 路由器渲染所有匹配的路由,它只确保渲染一个匹配的路由。在您的情况下,您有两个匹配的路由:

  • /alunos/:id
  • /alunos/adicionar-aluno

它首先捕获/alunos/:id 并渲染与该路由关联的组件。因此,在这种情况下,路由的顺序很重要。正如 @HalilC 在评论中提到的,切换路由的顺序将解决您的问题。

关于reactjs - 使用 react 路由器渲染错误的组件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/64512688/

相关文章:

javascript - 在 redux 中使用 React Router

javascript - createMemoryHistory 仍然报告 `Browser history needs a DOM`

javascript - React Pose + React Router 键无法识别?

javascript - React ImmutableJS - ShouldComponentUpdate

javascript - 使抽屉可调整大小的推荐方法?

javascript - 遍历文件 url 数组并使用 React 下载每个文件

react-router - React-Router HOC/withRouter是否有ES6语法?

javascript - 在 goBack() react 路由器 v4 之前检查历史记录之前的位置

javascript - React table 在构建中给出空表

reactjs - Search Console 中的 Google 爬虫无法使用 Github 页面在 React 中找到路由