No tienes acceso a esta clase

¡Continúa aprendiendo! Únete y comienza a potenciar tu carrera

Code review: Vistas Dinámicas para el SignIn

5/9
Recursos

Aportes 4

Preguntas 2

Ordenar por:

¿Quieres ver más aportes, preguntas y respuestas de la comunidad?

Por comodidad y escalabilidad es mejor separar y crear un servicio (pequeña librería) que interactúe con el LocalStorage. Algo asi:

De esta manera es más simple llamar cualquier cosa del storage, por ejemplo:

Tan solo se importa donde se necesite y de esta manera no tienes que hacer JSON.parse o JSON.stringify en todo lado, aparte que esa lógica queda encapsulada en 1 solo lado, por ende si se necesita cambiar algo. El cambio es en 1 solo lado:

También se puede renderizar de la siguiente manera:

{
	condición
		? render1
		: render2 
} 

.
Si se cumple la condición se ejecuta el render1 y sino el render2.
.
Por ejemplo:

return (
    <Layout>
      <h1 className="font-medium text-xl text-center mb-6 w-80">Welcome!</h1>
      {view === "create-user-info" ? (
        <div>Crear usuario</div>
      ) : (
        <div className="flex flex-col w-80">
          <p>
            <span className="font-ligth text-sm">Email: </span>
            <span>{parsedAccount?.email}</span>
          </p>
          <p>
            <span className="font-light text-sm">Password: </span>
            <span>{parsedAccount?.password}</span>
          </p>
          <Link to="/">
            <button
              className="bg-black disabled:bg-black/40 text-white w-full rounded-lg py-3 mt-4 mb-2"
              disabled={!hasUserAnAccount}
            >
              Log In
            </button>
          </Link>
          <div className="text-center">
            <a
              className="font-light text-xs underline underline-offset-4"
              href="/"
            >
              Forgot my password
            </a>
          </div>
          <button
            onClick={() => setView("create-user-info")}
            className="border border-black disabled:text-black/40 disabled:border-black/40 rounded-lg mt-6 py-3"
            disabled={hasUserAnAccount}
          >
            Sign Up
          </button>
        </div>
      )}
    </Layout>
  );
## 🦄✨ Para el primer issue, decidí desarrollar todos los features de las 2 vistas que se mencionan y de MyAccount. El orden en que lo hice fue: * Log In con datos quemados, validando existencia de usuario y match con su password. * Sign Up para almacenar nuevos usuarios validando que todos los campos estén completos y que el email ingresado no exista en el registro de usuarios. * Update de datos en My Account para actualizar correo contraseña o ambos, validando antes que se ingrese la actual contraseña y que el nuevo correo no exista en los registros de los usuarios. * Delete de cuenta. Esta feature elimina el registro del usuario logueado y lo redirige al login. Para esta implementé un Modal que confirma la decisión del usuario de liminar su cuenta. Para la implementación de todos estos features implementé un componente de Alertas que muestran el estado de la operación, si se realizó con éxito, si existe algún incumplimiento en alguna de las validaciones mencionadas. Estas son algunas de las maneras en que se visualizan las vistas: ![](https://static.platzi.com/media/user_upload/image-256dc8bf-e3ac-485b-a053-ff58a2686c02.jpg) ![](https://static.platzi.com/media/user_upload/image-852bf6be-5220-497f-a848-3d7c8a38727f.jpg) ![](https://static.platzi.com/media/user_upload/image-675b4956-0ee5-4e9d-a9ac-70316a38cf93.jpg) ![](https://static.platzi.com/media/user_upload/image-345e30da-a66a-4257-a6ae-aae0a06e92fd.jpg) Para ver el código pueden revisar mi repo:3 [CrisAcalo/CriStore (github.com)](https://github.com/CrisAcalo/CriStore)
He logrado casi el 80% de la prueba por mi cuenta, el problema con el que me he estancado es hacer Log In a primeras. No he podido lograr la condición de redireccion a Home luego de verificar la cuenta.