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

165
Vistas
¿Cómo controlar el enrutador de reacción usando la función global de JavaScript como objeto de ventana?

Sé sobre el enlace de navegación, pero necesito controlar la ruta desde el objeto de la ventana, lo que significa que tiene que ser una función global. En vuejs, fue fácil como,

 window.pushpath = function(path) { router.push("/"+path) }

¿Cómo puedo lograr este tipo de comportamiento en reaccionar? No puedo usar ganchos de reacción en js ya que está prohibido usar ganchos de reacción sin usarlos dentro del componente.

about 4 years ago · Santiago Trujillo
1 Respuestas
Responde la pregunta

0

Una solución trivial podría ser usar un gancho useEffect para configurar la función window.pushpath usando la función de navigate devuelta por el gancho useNavigate .

Ejemplo:

 import { useEffect } from 'react'; import { useNavigate } from 'react-router-dom'; ... const navigate = useNavigate(); useEffect(() => { window.pushpath = function(path, options) { navigate(path, options); } }, []);

Esta lógica solo puede funcionar siempre que haya un componente de enrutador más alto en ReactTree que el componente que ejecuta este efecto, es decir, el Router debe estar en el componente principal o más arriba.

Cualquier linter también puede quejarse de una dependencia faltante en la función de navigate . Es, AFAIK, una referencia estable, pero debería estar bien para agregar.

 useEffect(() => { window.pushpath = function(path, options) { navigate(path, options); } }, [navigate]);

Ahora que window.pushpath está actualizado, se puede llamar y pasar los mismos argumentos que la función de navigate .

navegar

 interface NavigateFunction { ( to: To, options?: { replace?: boolean; state?: any } ): void; (delta: number): void; }
about 4 years ago · Santiago Trujillo 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