当前位置: 首页 > 知识库问答 >
问题:

类组件内部的react-router-dom useParams()

臧正平
2023-03-14
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;
Error: Invalid hook call. Hooks can only be called inside of the body of a function component.

共有1个答案

司徒锐进
2023-03-14

您可以使用withrouger来实现这一点。只需将导出的类组件包装在wishrouter中,然后就可以使用this.props.match.params.id来获取参数,而不是使用useparams()。您还可以通过使用withrouger获取任何位置匹配history信息。它们都是在this.props下传入的

使用您的示例,它将如下所示:

import React from "react";
import { withRouter } from "react-router";

class TaskDetail extends React.Component {
    componentDidMount() {
        const id = this.props.match.params.id;
        this.fetchData(id);
    }

    fetchData = id => {
        // ...
    };

    render() {
        return <div>Yo</div>;
    }
}

export default withRouter(TaskDetail);

就这么简单!

 类似资料:
  • 我使用的是React Router v4的最新版本,我试图在div中呈现我的页面组件Home/About,但我遇到的问题是,如果我将路由添加到我的头中,它将切换路由,但它们将显示Home/About组件作为头的一部分,而不是我希望它们出现的位置。 如果我将路由放入中,则路由器不工作,但不会在控制台上抛出任何错误。 如何在div中显示和切换组件? 网页链接 app.js Header.js home

  • 我试图路由到一个类组件,但它给我一个错误。当我将组件更改为功能性组件时,路由就开始工作了。如何路由到类组件? 我刚开始使用React-Router。我首先有一个要路由到的功能组件。但是一旦我意识到组件需要是一个类,我就把它更改为一个类,现在路由显示 “无法获取/探索/单词”。

  • 本文向大家介绍React-Router 4中` `组件有几种类型?相关面试题,主要包含被问及React-Router 4中` `组件有几种类型?时的应答技巧和注意事项,需要的朋友参考一下 HashRouter:老浏览器的history,主要通过hash来实现,对应 BrowserRouter:高版本浏览器,通过html5里面的history,对应 **MemeoryRouter:**node环境下

  • 我有包含组件A的组件B。组件A定义了PropType以验证其属性。我希望组件B中有一个表示组件a中属性的属性,验证它们并引用它们。我似乎不明白。以下是我到目前为止所做的(为简化本次讨论而抽象): ComponentB中包含PropTypes.shape的行不会抛出任何警告,但是我仍然可以向ComponentA传递虚假的属性值,所以我觉得仍然缺少一些东西。也就是说,我可以写作 没有警告或错误,即使c

  • 问题内容: 由于我正在使用react-router来处理我的React应用程序中的路由,因此我很好奇是否有一种方法可以重定向到外部资源。 说某人点击: 我希望它重定向到: 我发现避免在index.html加载类似以下内容的纯JS中编写零帮助: 问题答案: 我实际上最终构建了自己的组件。 它从元素中获取信息,因此我可以将其保留在自己的路线中。如: 如果有人好奇,这是我的组件: 编辑-注意:这与一起使