javascript - React Routes 和 Components 道具组合
问题描述
我有以下代码行:
<Route path="/users/:id" exact ><User url={structure.users} /></Route>
在用户组件中,我执行以下操作:
function User(props, {match}) {
useEffect(() => {
console.log(match);
console.log(props);
}, [props]);
// ...
}
我删除了一些代码,因为我只想显示什么是必要的,但在这里我看到匹配是未定义的,但它应该有来自链接的 match.params.id。我怎样才能做到这一点,以便我可以使用带有附加 ID 的 url 制作完整的 url?
解决方案
React 组件只接收一个 props 对象参数。
使用Route
'srender
道具,以便您可以将路由道具传递给组件。
<Route
path="/users/:id"
exact
render={routeProps => <User url={structure.users} {...routeProps} />}
/>
或者,您可以使用useParams React 挂钩来访问match.params
当前的Route
.
import { ...., useParams, .... } from 'react-router-dom';
function User(props) {
const { id } = useParams();
useEffect(() => {
console.log(id);
console.log(props);
}, [props]);
// ...
}
推荐阅读
- encryption - 错误:“解码错误(36):字典不匹配”在命令行上使用 ZSTD 解码来解码 .ZST 文件
- python - 从父目录导入时出现 Python3 ModuleNotFoundError
- vue.js - 自定义字体未在 Electron + Vue App 上显示
- html - 当我缩放浏览器宽度时,我的英雄图像会放大
- vim - 使用vim查找项目中的文件
- python - 如何让用户猜字母和对应的数字,刽子手风格?
- r - ggfortify 自动绘图置信区间水平
- r - R - 通过匹配第二个数据框中的列来乘以数据框中的选择列
- ios - 如何在特定单词的垂直 UIStackView 换行符中制作 UITextLabel 文本 l
- r - 关于 R 中的“xlsx”包