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

114
Vistas
Redirigir programáticamente al usuario a otra página ReactJS

Quiero redirigir programáticamente al usuario a una página de carga mientras espero una respuesta de la API del servidor. Estoy tratando de hacer esto dentro de un componente de clase.

El código que tengo se parece más o menos a esto:

 class App extends Component { constructor(props){ super(props); } handleSubmit = () => { useNavigate("/loading") } } render() { return ( <div> <button onClick={this.handleSubmit}> Upload! </button> </div> ); } } export default App;

La cosa es que no pasa nada cuando hago clic en "¡Cargar!" botón. He leído que useNavigate no se puede usar dentro de un componente de clase, pero no estoy seguro de cómo podría implementar esto de manera diferente.

Supongo que mi pregunta es, ¿cómo puedo usar useNavigate dentro de un componente de clase?

EDITAR: Gracias por sus respuestas. Finalmente decidí convertir mi código en una función siguiendo estos pasos: https://nimblewebdeveloper.com/blog/convert-react-class-to-function-component

Ahora funciona a las mil maravillas.

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

0

Su aclaración es correcta, useNavigate() es un gancho y, por lo tanto, solo se puede usar en un componente funcional. Estoy pensando que, como alternativa, puede envolver su App con withRouter , un HOC que le da al componente de envoltorio acceso a los objetos de match , location e history . Desde allí, puede actualizar la ubicación con history.push('/loading') .

Consulte aquí para obtener más información sobre la history .

about 4 years ago · Juan Pablo Isaza Denunciar

0

No puede usar useNavigate que es un gancho de reacción dentro del componente de clase.

por cierto, puede usar react-router-dom que proporciona una forma diferente de manipular la URL del navegador.

about 4 years ago · Juan Pablo Isaza Denunciar

0

Crear un componente funcional como Wrapper

 import { useNavigate } from 'react-router-dom'; export const withRouter = (ClassComponent) => { const RouterWrapper = (props) => { const navigate = useNavigate(); return ( <ClassComponent navigate={navigate} {...props} /> ); }; return RouterWrapper; };

Luego, en su App.js , expórtelo envolviéndolo con el componente funcional

 import { withRouter } from './wrapper'; class App extends Component { constructor(props){ super(props); } handleSubmit = () => { useNavigate("/loading") } render() { return ( <div> <button onClick={this.handleSubmit}> Upload! </button> </div> ); } } export default withRouter(App);
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