Creo que es una lógica simple, pero como todavía estoy aprendiendo, tengo algunas dificultades para implementarla.
En la página de inicio de sesión de mi proyecto, obtengo los datos de quién inició sesión después de una solicitud de publicación. y en el usuario tengo el campo "tipo". Solo hay 2 tipos de usuarios.
Quiero que, si el usuario tiene tipo A, sea redirigido a la página de "inicio", si es de tipo B, vaya a la página "principal". Si aún no tiene un valor de tipo definido, vaya a la página "tipo de usuario".
Escribí esta lógica aquí pero no funciona. ¿Alguien puede ayudarme?
aquí está mi código
async function onFinish(values) { let axiosConfig = { headers: { "Content-Type": "application/json;charset=UTF-8", "Access-Control-Allow-Origin": "*", }, }; Axios.post( ` /login`, { email: values.email, senha: values.password, }, axiosConfig ) .then((resp) => { var name = resp?.data[0]?.prinom; var userId = resp?.data[0]?.id; var prodUser = resp?.data[0]; localStorage.setItem("prodUser", JSON.stringify(prodUser)); //here's the part i need help if (!resp?.data[0]?.tipo) history.push("/tipodeusuario"); resp?.data[0]?.tipo === "pac" ? history.push("/homepac") : history.push("/home"); })Después de encontrar el tipo de usuario (es decir, A o B), simplemente puede asignar una nueva URL a window.location
Aquí hay un pseudocódigo
function getUserType(AorB){ //Get user type return AorB; } //Store urls in a variable let url = (getUserType('A') == 'A')? './UrlForUserTypeA':'./UrlForUserTypeB'; //Redirect console.log('Redirecting...'); window.location = url;Espero que eso sea lo que necesitabas
En primer lugar, debe almacenar su respuesta en una variable para tener un código legible, así:
let apiResp = respoone.data.tipo;
if (apiResp === A){ history.push('/HomePage') }if(apiResp === B) { history.push('/MainPAge') }else { history.push('/userType') }También puede utilizar el enfoque "Cambiar caso".
O Operador condicional (ternario) que no recomiendo porque hace que su código sea menos legible.
useHistory ha cambiado en react-router v6. ahora usamos useNavigate .
if (apiResp === A){ navigate('/HomePage'); }if(apiResp === B) { navigate('/MainPage'); }else { navigate('/userType'); }gracias @Amin Arshadinia :)