【发布时间】:2020-02-21 05:32:00
【问题描述】:
我正在尝试加载基于 react-router-dom 路由的详细信息视图,该路由应获取 URL 参数 (id) 并使用它来进一步填充组件。
我的路由看起来像/task/:id,并且我的组件加载正常,直到我尝试从 URL 中获取 :id,如下所示:
import React from "react";
import { useParams } from "react-router-dom";
class TaskDetail extends React.Component {
componentDidMount() {
let { id } = useParams();
this.fetchData(id);
}
fetchData = id => {
// ...
};
render() {
return <div>Yo</div>;
}
}
export default TaskDetail;
这会触发以下错误,我不确定在哪里正确实现 useParams()。
Error: Invalid hook call. Hooks can only be called inside of the body of a function component.
文档仅显示基于功能组件的示例,而不是基于类的示例。
【问题讨论】:
-
钩子在基于类的组件中不起作用
-
@Dupocas 好的,这是有道理的。您会建议什么,将类重写为函数或使用类并尝试以其他方式获取 url 参数?
-
两个有效的选择。您可以发布
useParams的代码吗?也许把它变成HOC? -
谁能评论一下为什么这仅限于功能组件?我已经使用 React 大概 8 个月了,像这样的事情对我来说仍然是一个常规的“陷阱”,很想更好地理解它。
-
React Route v6 中的函数:stackoverflow.com/a/70251443/624533
标签: reactjs react-router