Empresas
Empleos
  • Sobre nosotros
  • Soluciones
    • Publicación de vacantes
      Publica tu vacante y recibe candidatos calificados en 48h.
    • Evaluación de candidatos
      500+ pruebas técnicas y psicológicas, más anti-fraude.
    • Headhunting
      Búsqueda ejecutiva a la medida de principio a fin.
    • Nómina + EOR
      Dispersión de nómina y EOR en más de 15 países de LATAM.
  • Precios
  • Empleos

0

138
Vistas
React No se puede leer la propiedad 'props' de undefined en React leyendo la variable de ruta de identificación de React Router

Estoy tratando de pasar una variable de ruta, ID de usuario, como apoyo a un componente de React representado por React Router:

Perfil.js

 export const Profile = (props) => { //array of compatible users fetched for a user. const [userProfileInformation, setUserProfileInformation] = useState([]); const [isLoading, setLoading] = useState(true); useEffect(() => { getUserProfileInformation().then(() => { setLoading(false); }); }, []); const getUserProfileInformation = async () => { //Currently hardcoded value until authorisation implemented. const userId = this.props.match.params.id; const response = await UserService.getUserProfileInformation(userId) .then(response => response.json()) .then(data => { setUserProfileInformation(data); }); } if (isLoading) { return ( <div id="loading"> <h2>Loading...</h2> </div> ) } return ( <div> <div className="profileCard"> <h2>{userProfileInformation.email}</h2> </div> </div> )

}

El error ocurre debido al código 'userId = props.match.params.id'.

Aplicación.js:

 const root = ReactDOM.createRoot( document.getElementById("root")

);

 root.render( <BrowserRouter> <Routes> <Route path="/" element={<App />} /> <Route path="/profile/:userId" element={<Profile />} /> </Routes> </BrowserRouter> );

Tablero.js:

 export const Dashboard = () => { return( <div> <h2>Dashboard</h2> <Button color="link"><Link to={`/profile/1`}>Profile</Link></Button> </div> );

}

Lo anterior usa temporalmente un valor codificado para el enlace, 1.

Editar:

Probado con const userId = props.match.params.id; y const userId = this.props.match.params.id y const userId = props.match.params.userId; y const userId = this.props.match.params.userId;

Todos dan el mismo resultado que antes.

Gracias

about 4 years ago · Juan Pablo Isaza
1 Respuestas
Responde la pregunta

0

La versión de react-router-dom que está utilizando es v6. En esta versión (que tiene muchos cambios importantes a los que debe estar atento), no se puede acceder al objeto params ya que las propiedades de route props no se pasan al element /componente.

Para acceder al userId de usuario, ahora necesita usar el useParams .

  1. Importarlo: import {useParams} from 'react-router-dom'
  2. En lugar de const userId = props.match.params.userId , use const { userId } = useParams() y luego utilícelo como lo hizo antes.

Si esta respuesta te ayuda, por favor acéptala. ¡Gracias!

about 4 years ago · Juan Pablo Isaza Denunciar
Responde la pregunta
Encuentra empleos remotos

¡Descubre la nueva forma de encontrar empleo!

Top de empleos
Top categorías de empleo
Empresas
Publicar vacante Precios Comercial
Legal
Términos y condiciones Política de privacidad
© 2026 PeakU Inc. All Rights Reserved.
Andres GPT
Recomiéndame algunas ofertas
Necesito ayuda