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

184
Vistas
¿Cómo activar una notificación emergente al enviar un formulario en React usando el gancho de navegación de React Router?

Estoy tratando de activar un mensaje de éxito de notificación emergente al enviar un formulario en React. El problema es que al enviar, la página se redirige a una página separada usando el gancho useNavigate() de React Router y no hay relación entre el componente del formulario y la página redirigida, por lo que necesito alguna forma de activar la ventana emergente después de que se haya realizado la redirección. lugar.

Actualmente estoy usando el accesorio de estado de useNavigate para pasar un valor booleano verdadero a la página redirigida al enviar el formulario. Esto funciona mediante el uso de un gancho useEffect para verificar primero si el valor es verdadero cuando la página se carga por primera vez, si es así, active la ventana emergente y luego cambie el valor de estado a falso, pero el valor de estado booleano se conserva y parece que no se puede cambiar cada vez actualiza la página, el valor vuelve a cambiar a verdadero para que se active la ventana emergente.

Si alguien puede aconsejarme o quizás conozca una mejor manera de manejar este tipo de ventanas emergentes entre rutas en React, se lo agradecería.

Aquí está mi código:

Componente de formulario onSubmit función:

 const navigate = useNavigate(); const onSubmit = async (values: ClientFormValues): Promise<ApiError | undefined> => { const createClientResponse = await createClient(values); console.log("client response on submit = ", createClientResponse); if (!createClientResponse.success) return createClientResponse.error; navigate(appPaths.clients.index, {state: {formSubmitted: null}}); };

Página redirigida:

 const [open, setOpen] = useState(false); const location = useLocation(); const state = location.state as { formSubmitted?: boolean }; const handleOpenAlert = () => { setOpen(true); }; const handleCloseAlert = () => { setOpen(false); }; useEffect(() => { if (state && state.formSubmitted) { handleOpenAlert(); state.formSubmitted = false; } }, []);
about 4 years ago · Juan Pablo Isaza
1 Respuestas
Responde la pregunta

0

En el componente de recepción, debe borrar el estado a través de una nueva acción de navegación en lugar de intentar mutarlo.

Use una redirección a la ruta actual, sin estado, para REEMPLAZAR la entrada actual en la pila de historial.

Ejemplo:

 const location = useLocation(); const navigate = useNavigate(); const [open, setOpen] = useState(false); const state = location.state as { formSubmitted?: boolean }; const handleOpenAlert = () => { setOpen(true); }; const handleCloseAlert = () => { setOpen(false); }; useEffect(() => { if (state && state.formSubmitted) { handleOpenAlert(); navigate(".", { replace: true }); // redirect to current path sans state } }, [navigate, state]);
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