Empresas
Empregos
  • Sobre nós
  • Soluções
    • Publicação de vagas
      Publique sua vaga e receba candidatos qualificados em 48h.
    • Avaliações de candidatos
      Mais de 500 testes técnicos e psicológicos, mais anti-fraude.
    • Headhunting
      Busca executiva personalizada do início ao fim.
    • Folha de Pagamento + EOR
      Dispersão de folha e EOR em mais de 15 países da LATAM.
  • Preços
  • Empregos

0

179
Visualizações
¿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 Respostas
Responde à pergunta

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 Relatório
Responde à pergunta
Encontrar trabalhos remotos

Descubra a nova forma de encontrar um emprego!

melhores empregos
Principais categorias de trabalho
Empresas
Postar vaga Preços Comercial
Jurídico
Termos e Condições Política de privacidade
© 2026 PeakU Inc. All Rights Reserved.
Andres GPT
Recomende algumas ofertas para mim
Preciso de ajuda