reactjs - 使用 React Router 访问特定 URL
问题描述
我正在尝试使用 React Router 转到我的应用程序上显示用户信息的特定页面。我所有的 React 路由都存储在一个单独的文件中,并像这样导出:
export const USERS = "/users/:userId";
我想要做的是调用这条路线,我可以将它导入我的应用程序。但是,我希望能够指定具体userId
要去的地方。对此的任何帮助将不胜感激。
我使用导入我的路线import * as ROUTES from "../../constants/routes";
。然后可以调用ROUTES.USERS
访问这个特定的路由。我只需要能够传递userId
对象。
我设置了一个页面,可以userId
从路由参数中获取,然后加载用户的信息。
package.json 中的当前反应依赖项:
"react": "^16.13.1",
"react-dom": "^16.13.1",
"react-router-dom": "^5.1.2",
"react-scripts": "3.4.1",
编辑
添加一些关于我的问题的更多细节......
所以我有一张桌子,里面有几行用户。当我单击用户时,我想查看包含这些详细信息的页面。我可以userId
正确地从表格行中获取,但我的问题是如何将它userId
放入路由器中。目前,我为要访问的 URL 存储了一个变量 ( export const USERS = "/users/:userId")
。然后在我的 JS 中,我有如下内容:
props.history.push(ROUTES.USERS);
我想知道如何将userId
变量修改为这个常量(如果可能的话)。我知道在用户特定页面上将其从 URL 中取出的方法。我想我可以做到props.history.push('users/${userId}')
,但如果可能的话,我最好不想这样做。再次感谢!
解决方案
在澄清的基础上对此进行了修订。
答案应该是;
props.history.push(`${window.location.pathname}/${userId}`);
如果你console.log(props.match)
;
您从React Router获得以下数据:
{
"path": "/users/:id",
"url": "/users/7",
"isExact": true,
"params": {
"id": "7"
}
}
从技术上讲,您可以在最后进行 str 替换,但如果 id 更长或发生变化,那将不理想。
在大多数情况下,window.location.pathname
这将是要走的路。
推荐阅读
- typescript - Typescript 中的 Modulus(%) 运算符无法正确处理大数字
- logging - IndexedDB - 防止 indexeddb.sqlite3-wal 文件增长到 GB
- excel - 日期戳代码和数据覆盖问题
- mongodb - 让查找带有objectId
- scala - rlike 语句时编写巨大的功能方式
- php - PHP7.3 on eregi
- excel - VBA:访问 IE 'Do While' 的自动化错误
- android - API 29 webview net::ERR_CLEARTEXT_NOT_PERMITTED
- c# - 如何安全地将可能的空值转换为整数
- mysql - 使用 5000 万个文档对 MySQL 到 MongoDB 数据库进行建模的性能问题