En App.js tengo la siguiente ruta:
<Route path="/Comp1/:catid"> <Comp1 /> </Route>Esta ruta se puede llamar haciendo clic en este enlace con un solo parámetro:
<Link to={'/Comp1/' + catid}>Comp1 </Link>El parámetro catid siempre tiene un valor determinado.
Comp1 es un componente definido de la siguiente manera:
import React, { Component } from 'react'; import { useParams } from 'react-router-dom'; export default class Comp1 extends Component { componentDidMount() { const params = useParams(); const { catid } = params.catid; console.log(catid); } componentDidUpdate() { } render() { return ( <div> Hello, I am class Comp1 </div> ); } };Pero lo que está sucediendo ahora es en tiempo de ejecución, obtengo el siguiente resultado de depuración:
'react-router-dom' no contiene una exportación llamada 'useParams'
--editar--
La versión instalada de react-router-dom es 4.2.2.
Definitivamente un problema de versión. También se comenta en esta edición oficial .
Solución: asegúrese de estar usando react-router-dom@>=5.1 , ya que ese gancho en particular se introdujo en la versión 5.1 .
Si tiene problemas para instalar los módulos en una versión adecuada, entonces es el momento perfecto para practicar precisamente eso, especialmente porque es muy probable que suceda una y otra vez, si no lo hace.