现在我这样做:
constructor(props) {
super(props);
let r = useRouteMatch();
this.path = r.path;
this.url = r.url;
}
但是这不起作用并引发错误:如果我在render()中使用它们,则未定义url
该代码在文档中指出:
let {path, url} = useRouteMatch();
它适用于函数式编程,不适用于类。如何在此将这些变量声明为一行?还是什么
答案 0 :(得分:0)
useRouteMatch()
函数实际上是一个React自定义 hook 。挂钩仅适用于功能组件,因此不能与类组件一起使用。您可以详细了解什么钩子是如何使用它们的here。
答案 1 :(得分:0)
仅在功能组件中起作用。您必须直接在Route
的{{1}},component
或children
道具下渲染组件,或使用render
HOC装饰它并将它们从withRouter
道具中拉出来。
您将可以在各个地方匹配对象:
- 将组件路由为
match
- 将渲染呈现为
this.props.match
- 将孩子作为
({ match }) => ()
- withRouter为
({ match }) => ()
this.props.match