Redirigir con “useNavigate” y “state” parece ser difícil de lograr.
Lo que estoy intentando hacer:
Tengo un formulario que un cliente está completando. Eligen el día y la hora de una cita antes de pagarla. Durante el pago, son redirigidos a una página de pago alojada y luego regresan para completar el proceso. Cuando se redirige, parte de la información de la tarjeta de crédito está en la ruta. Estoy intentando usar useParams para obtener esa información y luego redirigirlos a la página en la que estaban. Parte de los parámetros me indica que su pago fue aprobado y eso es todo lo que necesito. Necesito establecer el estado como aprobado en función de esto. Luego, usar ese estado en mi página de citas, completar el formulario y enviarlo, y volver a establecer el estado en falso cuando termine.
Código actual:
“`js
const location = useLocation();
let navigate = useNavigate();
const params = new URLSearchParams(location.search);
<Route
path=’/confirm’
element={
params.has(‘sslapprovalcode’) ? (
navigate('./appointments', { approved: true })
) : (
<div style={{ height: '1000px' }}>
Se produjo un error al procesar la tarjeta. Utilice una tarjeta diferente o comuníquese con el cliente.
</div>
)
}
/>
/>
}
/>
Luego, intentando hacer esto al final de mi función de envío
davy.ai
Solución
Para resolver este problema, puedes utilizar el hook
useParams
para obtener los parámetros necesarios de la URL. Para establecer el estado, puedes utilizar el hookuseState
. Aquí tienes un ejemplo:En el ejemplo anterior, primero utilizamos el hook
useParams
para obtener el parámetro necesario de la URL. Luego utilizamos el hookuseState
para establecer el estadoapproved
basado en el valor del parámetro. Si el pago es aprobado, navegamos a la páginaCitas
con el estadoapproved
establecido entrue
. Si el pago no es aprobado, mostramos un mensaje de error.En el componente
Citas
, utilizamos el hookuseNavigate
para navegar a la página de agradecimiento después de enviar el formulario. También utilizamos el hookuseState
para establecer el estadoapproved
, que se pasa como una propiedad al componenteCitas
. Si el pago es aprobado, mostramos un mensaje en la página.