【问题标题】:can't declare url and path variables in useRouteMatch不能在 useRouteMatch 中声明 url 和 path 变量
【发布时间】:2020-07-05 15:25:03
【问题描述】:

现在我这样做了:

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

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

let {path, url} = useRouteMatch();

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

【问题讨论】:

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


    【解决方案1】:

    React 钩子在功能组件中起作用。您必须直接在Routecomponentchildrenrender 道具下渲染组件,或者用withRouter HOC 装饰它并从match 道具中拉出它们。

    您将可以访问不同位置的匹配对象:

    • 路由组件为this.props.match
    • 路由渲染为({ match }) => ()
    • 将孩子路由为({ match }) => ()
    • withRouter 为this.props.match
    const { match: { path, url } } = this.props;
    

    withRouter match

    【讨论】:

      【解决方案2】:

      useRouteMatch() 函数实际上是一个 React 自定义 hook。 Hooks 仅适用于功能组件,因此您不能将其与类组件一起使用。你可以阅读更多关于什么钩子是如何使用它们的here

      【讨论】:

        猜你喜欢
        • 2011-12-22
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2017-08-06
        • 1970-01-01
        • 2018-11-09
        相关资源
        最近更新 更多