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

258
Vistas
Confirmación de salida de página usando React

Actualmente estoy trabajando en un proyecto en el que quiero mostrar un cuadro de diálogo personalizado con mi propio contenido ("Guarde sus datos en borradores antes de salir"). He intentado diferentes métodos pero no puedo encontrar una forma adecuada de hacerlo. Exploré todas las preguntas anteriores sobre StackOverflow pero no funcionaron correctamente en mi caso.

 useEffect(() => { return () => { window.onbeforeunload = function() { return "do you want save your data into drafts before leave?"; }; } },[])

Actualmente, he escrito el código anterior en JavaScript simple para hacerlo, pero solo muestra el cuadro de diálogo en la pestaña cerrar y recargar mientras no se muestra en eventos de clic personalizados para navegar a otras páginas o al botón de retroceso de la ventana.

React no puede ayudarme en esto porque eliminan useBlocker , usePrompt de los nuevos lanzamientos. ¿Cómo puedo lograrlo?

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

0

Una forma de hacer esto es:

 import { Prompt } from 'react-router' const MyComponent = () => ( <> <Prompt when={shouldBlockNavigation} message='Do you want ot save data before leave?' /> {/* Component JSX */} </> )

Si desea actualizar la página o cerrar el navegador, agregue:

 useEffect(() => { if (shouldBlockNavigation) { window.onbeforeunload = () => true } else { window.onbeforeunload = undefined } },[]);

La segunda forma es usar el historial si usa el enrutador de reacción

 useEffect(() => { let unblock = history.block((tx) => { // Navigation was blocked! Let's show a confirmation dialog // so the user can decide if they actually want to navigate // away and discard changes they've made in the current page. let url = tx.location.pathname; if (window.confirm(`Are you sure you want leave the page without saving?`)) { // Unblock the navigation. unblock(); // Retry the transition. tx.retry(); } }) },[]);
about 4 years ago · Juan Pablo Isaza Denunciar

0

 useEffect(() => { const unloadCallback = (event) => { event.preventDefault(); event.returnValue = ""; return ""; }; window.addEventListener("beforeunload", unloadCallback); return () => { window.addEventListener("popstate", confirmation()); window.removeEventListener("beforeunload", unloadCallback); } }, []);

Lo acabo de hacer con este ejemplo de código (en realidad, combino dos eventos para mostrar el diálogo cada vez que los usuarios abandonan una página) y funciona bien para mí. Gracias a todos ustedes... Especialmente @DrewReese por la ayuda

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