无法在useRouteMatch中声明url和path变量

时间:2020-03-25 03:58:10

标签: javascript reactjs class ecmascript-6 react-router

现在我这样做:

constructor(props) {
    super(props);
    let r = useRouteMatch();
    this.path = r.path;
    this.url = r.url;
}

但是这不起作用并引发错误:如果我在render()中使用它们,则未定义url
该代码在文档中指出:

let {path, url} = useRouteMatch();

它适用于函数式编程,不适用于类。如何在此将这些变量声明为一行?还是什么

2 个答案:

答案 0 :(得分:0)

useRouteMatch()函数实际上是一个React自定义 hook 。挂钩仅适用于功能组件,因此不能与类组件一起使用。您可以详细了解什么钩子是如何使用它们的here

答案 1 :(得分:0)

仅在功能组件中起作用。您必须直接在Route的{​​{1}},componentchildren道具下渲染组件,或使用render HOC装饰它并将它们从withRouter道具中拉出来。

您将可以在各个地方匹配对象:

  • 将组件路由为match
  • 将渲染呈现为this.props.match
  • 将孩子作为({ match }) => ()
  • withRouter为({ match }) => ()
this.props.match

withRouter match