No tienes acceso a esta clase

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

No se trata de lo que quieres comprar, sino de quién quieres ser. Aprovecha el precio especial.

Antes: $249

Currency
$209

Paga en 4 cuotas sin intereses

Paga en 4 cuotas sin intereses
Suscríbete

Termina en:

15 Días
14 Hrs
56 Min
5 Seg

Code review: LocalStorage en React.js

4/9
Recursos

Aportes 12

Preguntas 4

Ordenar por:

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

Creo que todo seria super bonito si hacen que la api de platzi sea solo de productos serios y no de cosas raras jajsjaj

Hermoso como tenes todo acomodado y paso a paso! Me encanta el curso ♥

Justo como se esta usando la variable sign-out de localStorage y como ya se hizo la maqueta del SignIn, aproveche de colocar una funcion muy similar a la de handleSignOut, llamada handleLogIn en el boton de LogIn, para no tener que estar eliminando la variable desde el LocalStorage en el navegador.

En primer lugar, importe el Context, el elemento Link de react-router-dom y el contexto

import { useContext } from 'react'
import { Link } from 'react-router-dom'
import { ShoppingCartContext } from '../../Context'

Luego, dentro de SignIn, cree la funcion para gestionar el logIn

const handleLogIn = () => {
    const stringifiedSignOut = JSON.stringify(false)
    localStorage.setItem('sign-out', stringifiedSignOut)
    context.setSignOut(false)
  }

y posteriormente, le asigne esta funcion al evento click del boton de LogIn

<button
            onClick={()=>handleLogIn()}
            >
            Log in
          </button>

Voy dejando mi vista

¿Para una prueba técnica esta bien usar librerias o mejor no usar? en este caso para el formulario yo uso formik y yup.

Yo realize la funcion de initialStorage en context de la siguiente manera, me parece que se ve mas legible y evitamos la repeticion de codigo.

export const initializeLocalStorage = () => {
	const accountInLocalStorage = localStorage.getItem('account');
	const singOutInLocalStorage = localStorage.getItem('sing-out');

	let parsedAccount;
	let parsedSingOut;

	if (!accountInLocalStorage || !singOutInLocalStorage) {
		localStorage.setItem('account', JSON.stringify({}));
		localStorage.setItem('sing-out', JSON.stringify(false));
		parsedAccount = {};
		parsedSingOut = false;
	} else {
		parsedAccount = JSON.parse(accountInLocalStorage);
		parsedSingOut = JSON.parse(singOutInLocalStorage);
	}
};
## 🦄✨ En lo personal, decidí agregar un poco más de dinamismo a la aplicación, sin dejar de lado los issues de la prueba. Creé dos keys en el localStorage. Una que contendrá a todos los usuarios de la aplicación, y otra que contendrá solamente al usuario que está autenticado. Con esas dos llaves se puede realizar todo el proceso que solicita la prueba, además de poder realizar todas las operaciones CRUD de un usuario regular (no como administrador), como: crear una cuenta desde SignUp, actualizar datos desde MyAccount, eliminar cuenta, cerrar sesión y evidentemente iniciar Sesión en el Log In. Estas son las vistas que desarrollé para el primer issue: ![](https://static.platzi.com/media/user_upload/127.0.0.1_5173_-c8248abe-8085-4caf-9c75-a682b2598966.jpg) ![](https://static.platzi.com/media/user_upload/127.0.0.1_5173_-dab0dbd9-7735-472d-97e2-570b9b1127aa.jpg) ![](https://static.platzi.com/media/user_upload/127.0.0.1_5173_-20c1799a-8c1e-4405-a0b1-ee9256ffde5f.jpg) Y esta es la manera en la que se guarda la información en el LocalStorage ![](https://static.platzi.com/media/user_upload/image-c6c6dfcd-5bca-4b83-b115-9e39e1823c7a.jpg)
no me sale la key en el navegador, alguien sabe si debo ejecutar la función initializeLocalStorage()? y si sí, en dónde debe llamarse? gracias.
XDDDDDDDDD Yo creía que la primera parte era todo esto ![](https://static.platzi.com/media/user_upload/image-01ad6435-3250-4466-8cb8-ffd725646091.jpg) * Login si el usuario es nuevo el invalida el ingresar y se muestra la advertencia que cree una cuenta * Si el usuario ya creo una cuenta invalida el crear cuenta y muestra que ya posee una y ingrese * Si ingresa lo manda al home * Si crea una cuenta y deja un espacio vacio advertencia * Si todos los espacios estan completados pero el email no cuenta con @ ni con . advertencia * Si pasa estos filtros crea la cuenta y lo manda al home * Si vuelve a esa vista muestra email y contraseña
En el caso de que apliquen html semántico aviso de que el componente \<Link> entra en conflicto con la etiqueta \<form>, yo lo solucione encapsulando en un div.![](https://static.platzi.com/media/user_upload/image-bfd81082-226e-4170-b457-10c19ee85a6d.jpg)Mi solución es mas extensa a la de teff (100 líneas 🤣)pero creo que dentro de todo esta bien .

![](