reactjs - 具有默认值的 React-Router UrlParameter 未显示活动
问题描述
我有一个比赛结果应用程序,它有一个导航栏,它显示一个“所有结果”Nav.Link
选项来显示所有结果,还有一个“添加结果”Nav.Link
选项允许您输入结果。不同之处在于,如果我直接单击“添加结果”链接,它应该将其视为我输入比赛编号并在条目中查找的链接,但如果我在结果页面中并单击一个条目在那里,它应该进入“添加结果”页面,其中填写了所有条目信息。
我通过在我的路由中使用 Url 参数来完成所有工作,因此当您单击“所有结果”链接时,/result/0
如果您单击一个条目,它会转到“所有结果”表中,它会执行dispatch(push('/result/' + id));
所有这一切的唯一问题是,当它跟随/result/999999
链接时,它不会使匹配Nav.Link
处于活动状态。当我单击“添加结果”链接到/result0
. 我假设它只是将当前 url 与Nav.Link
s 中的 url 匹配。我是否真的必须跟踪我在“所有结果”页面中并active
在我自己上设置属性,Nav.Link
或者路由器是否可以通过某种方式为我做这件事?
<Nav.Link as={NavLink} to='/results' exact>
All Results
</Nav.Link>
<Nav.Link as={NavLink} to='/result/0' exact>
Add Result
</Nav.Link>
...
<Switch>
<Route path='/' exact component={AllEntriesWrapper} />
<Route path='/results' exact component={AllResultsWrapper} />
<Route path='/result/:entryId' exact component={AddResult} />
</Switch>
解决方案
为了完成这项工作,我进行了以下更改
- 将链接更改为
<Nav.Link as={NavLink} to='/result'>
,删除0
参数和exact
关键字。 - 添加了第四条路线,例如
<Route path='/results/' exact component{AddResult}/>
- 确保 AddResult 组件处理 undefined
ownProps.match.params.entryId
的方式与'0'
之前处理的方式相同。
推荐阅读
- kubernetes - Prometheus 未从 GKE 中的 cadvisor 接收指标
- python - 我无法将一个(熊猫)DataFrame 正确附加到另一个 DataFrame
- hash - Teradata:哈希字符串以返回一定长度的字符串
- python - 找到最短距离,同时只访问每个节点一次
- sql - REGEX 提取金额不带货币
- javascript - 添加 svg 图像作为语义 UI 输入的图标
- gradle - 尽管其中一项任务失败,Gradle 将退出代码返回为 0
- reactjs - 错误边界在生产中使用是否安全?
- javascript - 比较日期时间与当前日期javascript
- react-native - 抽屉导航中的后退标题按钮