reactjs - 使用反应路由器渲染了错误的组件
问题描述
当我试图导航到以下 url http://localhost:3000/alunos/adicionar-aluno 但它使用空值而不是正确的组件 { FormAddStudent } 呈现组件 {Detail Student}。我是新手,所以不确定我做错了什么,我正在尝试使用确切的道具但没有成功。
这是代码:
<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 从顶部开始并寻找第一个匹配的路由。确切的道具不会阻止 React 路由器渲染所有匹配的路由,它只确保渲染一个匹配的路由。在您的情况下,您有两个匹配的路由:
- /alunos/:id
- /alunos/adicionar-aluno
它首先捕获 /alunos/:id 并渲染与该路由关联的组件。因此,在这种情况下,路由的顺序很重要。正如@HalilC 在评论中提到的,切换路由的顺序将解决您的问题。
推荐阅读
- html - 从 SQL 数据库中选择某些 id 并将它们与其他 id 区别对待
- neural-network - 当添加一个新的节点基因时,是给它一个全局的还是局部的新编号?整洁的
- scylla - 创建包含非关键属性的全局二级索引
- powershell - Import-Csv 和 Set-MailContact:如何将 -ExtensionCustomAttribute1 设置为多个值
- javascript - 使用 Javascript 在 Chrome Selenium 中打开新标签时,浏览器滑到底部
- apache - Apache 可以同时设置为正向代理和反向代理吗?
- python-3.x - OSError: [WinError 193] %1 在 Jupyter Notebook 中导入包时不是有效的 Win32 应用程序
- gnuplot - 指定点的 Gnuplot cspline 插值数据集
- sql - 公用表表达式“cte”的递归成员有多个递归引用?
- python - 如何从索引向量 B 中计算从向量 A 中选择的值的平均值?