首页 > 其他分享 >类组件内的 react-router-dom useParams()

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

时间:2024-10-21 11:23:24浏览次数:7  
标签:dom withRouter react 组件 router useParams id

我正在尝试加载基于 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.

文档仅显示基于功能组件的示例,而不是基于类的示例。

 

您可以使用 withRouter 来完成此操作。只需将导出的分类组件包装在 withRouter 中,然后就可以使用 this.props.match.params.id 获取参数,而不是使用 useParams() 。您还可以获得任何 location , match , - - history withRouter 它们都是在 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);

 

文章来源:https://segmentfault.com/q/1010000042465782

标签:dom,withRouter,react,组件,router,useParams,id
From: https://www.cnblogs.com/webqiand/p/18489089

相关文章

  • JavaScript的DOM操作
    元素的继承classStudentextendsPerson{}创建一个Student对象继承自Person对象本身会自带Person的属性并且可以创建属于自己的属性什么是DOM?◼前面我们花了很多时间学习JavaScript的基本语法,但是这些基本语法,但是这些语法好像和做网页没有什么关系,和前面学习的H......
  • Dom阶段实战案例
    window定时器◼有时我们并不想立即执行一个函数,而是等待特定一段时间之后再执行,我们称之为“计划调用(schedulingacall)”。◼目前有两种方式可以实现:setTimeout允许我们将函数推迟到一段时间间隔之后再执行。setInterval允许我们重复运行一个函数,从一段时间间隔......
  • vue3 修改原对象,赋值原对象的ref或者reactive如何产生响应式视图变更,vue失去响应式的
    代码测试<template><divclass='box'>{{demo[0]?.a?.b?.c}}</div></template><scriptlang='ts'setup>import{ref,reactive,computed,onMounted,nextTick,PropType,toRaw}from'vue';i......
  • vue3 ref 或者reactive被赋值其他对象数据,用的是同一块内存,而不是深拷贝
    <template><divclass='box'>{{abcDemo?.a?.b?.c}}<button@click="changeAbc">ChangeABC</button><div>{{abdDemo?.a?.b?.c}}</div></div></template><sc......
  • 三,Random
    Random类详解在Java编程中,Random类是java.util包中用于生成随机数的类。它提供了多种方法来生成随机数,这些方法可以生成不同类型的随机数,包括整数、浮点数等。本文将详细探讨Random类的用法、构造方法和成员方法,包括nextInt()、nextDouble()等。Random类概述Random类是Java中用......
  • React Spring实战之API以及animated 组件的运用
    ReactSpring实战之API以及animated组件的运用小熊码农2024-04-20109 浏览#前端江河入海,知识涌动,这是我参与江海计划的第7篇。APIreact-spring库中与动画相关的API支持两种不同的使用渲染道具和react钩子的方法。接下来,我们将介绍reacthook的一些动画相关API:reac......
  • 常用类:包装类,System类,Random类,Arrays
    包装类--integer相关包装inti1=Integer.parseInt("100");//String->intSystem.out.println(i1);Integeri2=Integer.valueOf("100");//String->IntegerSystem.out.println(i2);Integeri3=In......
  • 解决React中的Hooks闭包陷阱
    React中的Hooks闭包陷阱是一个常见的问题,主要发生在useState和useEffect等Hooks的使用过程中。以下是一些解决React中Hooks闭包陷阱的方法:一、理解闭包陷阱的成因useState中的闭包陷阱useState的参数只会在组件挂载时执行一次,这意味着如果我们在useState的回调函数中使用了外部变量......
  • [ARC185D] Random Walk on Tree 题解
    一个很套路的做法。思路题目要求走完整个树的时间,这并不好算,容易想到min-max容斥。依据min-max容斥,我们可以轻松把它转化成第一次走到所有子集的时间。考虑在这道题中,有什么特殊的。第一,任何包含根节点的子集答案都是零。第二,由于我们只关心第一次走到的点的时间,因此假......
  • 【React】React17+配置Babel实现无需导入React就可以使用jsx
    React17以后,无需引入React包,就可以使用jsx语法,官网说明。Babel版本首先Babel要使用V7.9.0以上如果使用的是@babel/plugin-transform-react-jsxnpmupdate@babel/core@babel/plugin-transform-react-jsx如果使用的是@babel/preset-reactnpmupdate@babel/cor......