CursosEmpresasBlogLiveConfPrecios

Code review: LocalStorage en React.js

Clase 4 de 9 • Prueba Técnica: E-commerce Profesional con React.js

Clase anteriorSiguiente clase

Contenido del curso

Cómo presentar pruebas técnicas con React.js
  • 1
    Prueba técnica para React.js Developers

    Prueba técnica para React.js Developers

    01:36
  • 2
    Setup del proyecto con React y Vite

    Setup del proyecto con React y Vite

    04:02
  • 3
    Issues a resolver para completar la prueba

    Issues a resolver para completar la prueba

    07:30
Solución de la prueba
  • 4
    Code review: LocalStorage en React.js

    Code review: LocalStorage en React.js

    11:16
  • 5
    Code review: Vistas Dinámicas para el SignIn

    Code review: Vistas Dinámicas para el SignIn

    06:17
  • 6
    Code review: React Context y FormData

    Code review: React Context y FormData

    04:45
  • 7
    Code review: Protección de Rutas

    Code review: Protección de Rutas

    05:04
  • 8
    Code review: Entregando la Prueba

    Code review: Entregando la Prueba

    05:54
Próximos pasos
  • 9
    ¿Migramos a Next.js?

    ¿Migramos a Next.js?

    00:46
    david jurado

    david jurado

    student•
    hace 3 años

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

      Santiago Quintero

      Santiago Quintero

      student•
      hace 2 años

      Uy siiiii, ahorita esa API está una locura, elminaron categorias y muchos "productos" estan repetidos.

      Francisco Salazar

      Francisco Salazar

      student•
      hace 2 años

      Yo terminé haciendo mi propio backend para ahorrarme ese problema jaja

    Erika Ladner

    Erika Ladner

    student•
    hace 3 años

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

    Gerson David Barboza Alvarez

    Gerson David Barboza Alvarez

    student•
    hace 2 años

    Ehhh seré el único al que no le funciona el código del repo? jajajajajajajaja

    Brenda Sutara

    Brenda Sutara

    student•
    hace 2 años

    Voy dejando mi vista

    sign-in.png

    Zaidibeth Ramos

    Zaidibeth Ramos

    student•
    hace 2 años

    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>
    Diego Rubio

    Diego Rubio

    student•
    hace 8 meses

    ¡Hola a todos! 👋

    Quiero compartirles que la API original del curso está rota, lo que puede dificultar completar los ejercicios. Para ayudarles, he creado una versión funcional del proyecto base con una nueva API y código actualizado. 🚀

    Pueden clonar este repositorio para seguir el curso sin problemas:

    👉 <https://github.com/darubiomunoz/prueba-tecnica-reactjs>

    Además, si les resulta útil, no olviden darle una estrella ⭐ al repositorio y seguirme en GitHub. ¡Espero que les sea de ayuda y puedan completar el curso con éxito! 💚

    ¡Happy coding! 💻

    Ulqernesh Karvenae

    Ulqernesh Karvenae

    student•
    hace 2 años

    XDDDDDDDDD Yo creía que la primera parte era todo esto

    • 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
      Max Andy Diaz Neyra

      Max Andy Diaz Neyra

      student•
      hace 6 meses

      Ostia, como me reí

    Rafael Livise Larico

    Rafael Livise Larico

    student•
    hace 2 años

    ¿Para una prueba técnica esta bien usar librerias o mejor no usar?

    en este caso para el formulario yo uso formik y yup.

    Owen Vassarotto

    Owen Vassarotto

    student•
    hace 2 años

    ¿Donde es invocada la función initializeLocalStorage para agregar key de account y sign-out en localStorage?

    Magalí Acevedo

    Magalí Acevedo

    student•
    hace 3 años

    Algo hice mal 🙃

    error-lab.JPG

    Ideas ?? esta igual por que ya lo revise mil veces o eso creo

      Magalí Acevedo

      Magalí Acevedo

      student•
      hace 3 años

      tuve un typo , cuando no eh! 🙃

      error-labB.JPG
    Max Andy Diaz Neyra

    Max Andy Diaz Neyra

    student•
    hace 6 meses

    Yo implemente la solucion algo diferente:

    En el context escribe el siguiente codigo:

    const [account, setAccount] = useState(()=>localStorage.getItem("account") ? JSON.parse(localStorage.getItem("account")): null) const [signOut, setSignOut] = useState(()=>localStorage.getItem("sign-out") ? JSON.parse(localStorage.getItem("sign-out")): true ); const updateAccount = (newAccount)=>{ setAccount(newAccount); localStorage.setItem("account", JSON.stringify(newAccount)); } const updateSignOut = (newSignOut)=>{ setSignOut(newSignOut); localStorage.setItem("sign-out", JSON.stringify(newSignOut)); } ```Y luego en navbar : ```tsx const context = useContext(ShoppingCartContext) const activeStyle = 'underline underline-offset-4' const isAuthenticated = !context.signOut; const onSignOut = ()=>{ context.updateSignOut(true); }
    Cristian Acalo

    Cristian Acalo

    student•
    hace un año

    🦄✨ 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:

    Y esta es la manera en la que se guarda la información en el LocalStorage

    Victor Isaac Olivares Torres

    Victor Isaac Olivares Torres

    student•
    hace un año

    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.

    Guillermo Prituluk

    Guillermo Prituluk

    student•
    hace 2 años

    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.

    Mi solución es mas extensa a la de teff (100 líneas 🤣)pero creo que dentro de todo esta bien .

    Wil Garcia Mercado

    Wil Garcia Mercado

    student•
    hace 2 años
    Reto1.png
    Zaidibeth Ramos

    Zaidibeth Ramos

    student•
    hace 2 años

    ![](

    Screen Shot 2023-08-28 at 5.31.59 PM.png

Escuelas

  • Desarrollo Web
    • Fundamentos del Desarrollo Web Profesional
    • Diseño y Desarrollo Frontend
    • Desarrollo Frontend con JavaScript
    • Desarrollo Frontend con Vue.js
    • Desarrollo Frontend con Angular
    • Desarrollo Frontend con React.js
    • Desarrollo Backend con Node.js
    • Desarrollo Backend con Python
    • Desarrollo Backend con Java
    • Desarrollo Backend con PHP
    • Desarrollo Backend con Ruby
    • Bases de Datos para Web
    • Seguridad Web & API
    • Testing Automatizado y QA para Web
    • Arquitecturas Web Modernas y Escalabilidad
    • DevOps y Cloud para Desarrolladores Web
  • English Academy
    • Inglés Básico A1
    • Inglés Básico A2
    • Inglés Intermedio B1
    • Inglés Intermedio Alto B2
    • Inglés Avanzado C1
    • Inglés para Propósitos Específicos
    • Inglés de Negocios
  • Marketing Digital
    • Fundamentos de Marketing Digital
    • Marketing de Contenidos y Redacción Persuasiva
    • SEO y Posicionamiento Web
    • Social Media Marketing y Community Management
    • Publicidad Digital y Paid Media
    • Analítica Digital y Optimización (CRO)
    • Estrategia de Marketing y Growth
    • Marketing de Marca y Comunicación Estratégica
    • Marketing para E-commerce
    • Marketing B2B
    • Inteligencia Artificial Aplicada al Marketing
    • Automatización del Marketing
    • Marca Personal y Marketing Freelance
    • Ventas y Experiencia del Cliente
    • Creación de Contenido para Redes Sociales
  • Inteligencia Artificial y Data Science
    • Fundamentos de Data Science y AI
    • Análisis y Visualización de Datos
    • Machine Learning y Deep Learning
    • Data Engineer
    • Inteligencia Artificial para la Productividad
    • Desarrollo de Aplicaciones con IA
    • AI Software Engineer
  • Ciberseguridad
    • Fundamentos de Ciberseguridad
    • Hacking Ético y Pentesting (Red Team)
    • Análisis de Malware e Ingeniería Forense
    • Seguridad Defensiva y Cumplimiento (Blue Team)
    • Ciberseguridad Estratégica
  • Liderazgo y Habilidades Blandas
    • Fundamentos de Habilidades Profesionales
    • Liderazgo y Gestión de Equipos
    • Comunicación Avanzada y Oratoria
    • Negociación y Resolución de Conflictos
    • Inteligencia Emocional y Autogestión
    • Productividad y Herramientas Digitales
    • Gestión de Proyectos y Metodologías Ágiles
    • Desarrollo de Carrera y Marca Personal
    • Diversidad, Inclusión y Entorno Laboral Saludable
    • Filosofía y Estrategia para Líderes
  • Diseño de Producto y UX
    • Fundamentos de Diseño UX/UI
    • Investigación de Usuarios (UX Research)
    • Arquitectura de Información y Usabilidad
    • Diseño de Interfaces y Prototipado (UI Design)
    • Sistemas de Diseño y DesignOps
    • Redacción UX (UX Writing)
    • Creatividad e Innovación en Diseño
    • Diseño Accesible e Inclusivo
    • Diseño Asistido por Inteligencia Artificial
    • Gestión de Producto y Liderazgo en Diseño
    • Diseño de Interacciones Emergentes (VUI/VR)
    • Desarrollo Web para Diseñadores
    • Diseño y Prototipado No-Code
  • Contenido Audiovisual
    • Fundamentos de Producción Audiovisual
    • Producción de Video para Plataformas Digitales
    • Producción de Audio y Podcast
    • Fotografía y Diseño Gráfico para Contenido Digital
    • Motion Graphics y Animación
    • Contenido Interactivo y Realidad Aumentada
    • Estrategia, Marketing y Monetización de Contenidos
  • Desarrollo Móvil
    • Fundamentos de Desarrollo Móvil
    • Desarrollo Nativo Android con Kotlin
    • Desarrollo Nativo iOS con Swift
    • Desarrollo Multiplataforma con React Native
    • Desarrollo Multiplataforma con Flutter
    • Arquitectura y Patrones de Diseño Móvil
    • Integración de APIs y Persistencia Móvil
    • Testing y Despliegue en Móvil
    • Diseño UX/UI para Móviles
  • Diseño Gráfico y Arte Digital
    • Fundamentos del Diseño Gráfico y Digital
    • Diseño de Identidad Visual y Branding
    • Ilustración Digital y Arte Conceptual
    • Diseño Editorial y de Empaques
    • Motion Graphics y Animación 3D
    • Diseño Gráfico Asistido por Inteligencia Artificial
    • Creatividad e Innovación en Diseño
  • Programación
    • Fundamentos de Programación e Ingeniería de Software
    • Herramientas de IA para el trabajo
    • Matemáticas para Programación
    • Programación con Python
    • Programación con JavaScript
    • Programación con TypeScript
    • Programación Orientada a Objetos con Java
    • Desarrollo con C# y .NET
    • Programación con PHP
    • Programación con Go y Rust
    • Programación Móvil con Swift y Kotlin
    • Programación con C y C++
    • Administración Básica de Servidores Linux
  • Negocios
    • Fundamentos de Negocios y Emprendimiento
    • Estrategia y Crecimiento Empresarial
    • Finanzas Personales y Corporativas
    • Inversión en Mercados Financieros
    • Ventas, CRM y Experiencia del Cliente
    • Operaciones, Logística y E-commerce
    • Gestión de Proyectos y Metodologías Ágiles
    • Aspectos Legales y Cumplimiento
    • Habilidades Directivas y Crecimiento Profesional
    • Diversidad e Inclusión en el Entorno Laboral
    • Herramientas Digitales y Automatización para Negocios
  • Blockchain y Web3
    • Fundamentos de Blockchain y Web3
    • Desarrollo de Smart Contracts y dApps
    • Finanzas Descentralizadas (DeFi)
    • NFTs y Economía de Creadores
    • Seguridad Blockchain
    • Ecosistemas Blockchain Alternativos (No-EVM)
    • Producto, Marketing y Legal en Web3
  • Recursos Humanos
    • Fundamentos y Cultura Organizacional en RRHH
    • Atracción y Selección de Talento
    • Cultura y Employee Experience
    • Gestión y Desarrollo de Talento
    • Desarrollo y Evaluación de Liderazgo
    • Diversidad, Equidad e Inclusión
    • AI y Automatización en Recursos Humanos
    • Tecnología y Automatización en RRHH
  • Finanzas e Inversiones
    • Fundamentos de Finanzas Personales y Corporativas
    • Análisis y Valoración Financiera
    • Inversión y Mercados de Capitales
    • Finanzas Descentralizadas (DeFi) y Criptoactivos
    • Finanzas y Estrategia para Startups
    • Inteligencia Artificial Aplicada a Finanzas
    • Domina Excel
    • Financial Analyst
    • Conseguir trabajo en Finanzas e Inversiones
  • Startups
    • Fundamentos y Validación de Ideas
    • Estrategia de Negocio y Product-Market Fit
    • Desarrollo de Producto y Operaciones Lean
    • Finanzas, Legal y Fundraising
    • Marketing, Ventas y Growth para Startups
    • Cultura, Talento y Liderazgo
    • Finanzas y Operaciones en Ecommerce
    • Startups Web3 y Blockchain
    • Startups con Impacto Social
    • Expansión y Ecosistema Startup
  • Cloud Computing y DevOps
    • Fundamentos de Cloud y DevOps
    • Administración de Servidores Linux
    • Contenerización y Orquestación
    • Infraestructura como Código (IaC) y CI/CD
    • Amazon Web Services
    • Microsoft Azure
    • Serverless y Observabilidad
    • Certificaciones Cloud (Preparación)
    • Plataforma Cloud GCP

Platzi y comunidad

  • Platzi Business
  • Live Classes
  • Lanzamientos
  • Executive Program
  • Trabaja con nosotros
  • Podcast

Recursos

  • Manual de Marca

Soporte

  • Preguntas Frecuentes
  • Contáctanos

Legal

  • Términos y Condiciones
  • Privacidad
  • Tyc promociones
Reconocimientos
Reconocimientos
Logo reconocimientoTop 40 Mejores EdTech del mundo · 2024
Logo reconocimientoPrimera Startup Latina admitida en YC · 2014
Logo reconocimientoPrimera Startup EdTech · 2018
Logo reconocimientoCEO Ganador Medalla por la Educación T4 & HP · 2024
Logo reconocimientoCEO Mejor Emprendedor del año · 2024
De LATAM conpara el mundo
YoutubeInstagramLinkedInTikTokFacebookX (Twitter)Threads