Tengo tres tipos de usuario 'A', 'B', 'C' en mi proyecto de reacción. Estos valores se almacenan en el almacenamiento local. Cuando un usuario inicia sesión correctamente, quería redirigirlo a su ruta específica '/a','/b','/c'. .
Esto es lo que probé hasta ahora, pero no funciona correctamente
const submit = async (e) => { e.preventDefault(); if (password.length < 2) return; if (email.length < 2) return; try { const response = await apiClient.auth.login({ username: email, password, }); props.set_token(response.data.token); props.set_user_data(response.data.user); props.set_user_status({ approved: response.data.user.approved, loggedIn: true, token: response.data.token, }); if (response.status === 200) { //ON LOGIN SUCCESSFULL if (type.user.user_type === "A") { <Redirect to="/A" />; } else if (type.user.user_type === "B") { <Redirect to="/B" />; } else if (type.user.user_type === "C"){ <Redirect to="/C" />; } else{ <Redirect to="/signin" />; } } } catch (err) { console.log(err); } };¿Alguna ayuda? Gracias
Lo que necesita es React Router para lograr esto... Recurso para ayudarlo React Router
Intente reemplazar su bloque condicional con esto en su lugar
if (response.status === 200) { //ON LOGIN SUCCESSFULL if (type.user.user_type) { <Redirect to={`/${type.user.user_type}`}/>; } else { <Redirect to="/signin" />; }Si está utilizando React Router v6, debe usar el enlace useNavigate:
const navigate = useNavigate();Y entonces:
if (type.user.user_type === "A") { navigate('/A'); } else if (type.user.user_type === "B") { navigate('/B'); } else if (type.user.user_type === "C"){ navigate('/C'); }