Business
Jobs
  • About Us
  • Solutions
    • Job Postings
      Post your job and receive qualified candidates in 48h.
    • Candidate Assessments
      500+ technical and psychological tests, plus anti-fraud.
    • Headhunting
      Tailor-made executive search from start to finish.
    • Payroll + EOR
      Payroll dispersal and EOR across 15+ LATAM countries.
  • Pricing
  • Jobs

0

178
Views
¿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 answers
Answer question

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 Report
Answer question
Find remote jobs

Discover the new way to find a job!

Top jobs
Top job categories
Business
Post vacancy Pricing Sales
Legal
Terms and conditions Privacy policy
© 2026 PeakU Inc. All Rights Reserved.
Andres GPT
Show me some job opportunities
There's an error!