CursosEmpresasBlogLiveConfPrecios

Validaciones de UI

Clase 27 de 29 • Curso de React Router 5 y Redux

Clase anteriorSiguiente clase

Contenido del curso

Bienvenida al curso

  • 1
    Todo lo que aprenderás sobre React Router y Redux

    Todo lo que aprenderás sobre React Router y Redux

    01:30 min

¿Qué es React Router? y Aplicarlo en tus proyectos

  • 2
    ¿Qué es React Router y cómo instalarlo?

    ¿Qué es React Router y cómo instalarlo?

    02:54 min
  • 3
    Crear nuestro archivo de Rutas

    Crear nuestro archivo de Rutas

    07:33 min
  • 4
    Container: Login

    Container: Login

    10:29 min
  • 5
    Container: Register

    Container: Register

    06:28 min
  • 6
    Container: 404 Not Found

    Container: 404 Not Found

    06:43 min
  • 7
    Componente: Layout

    Componente: Layout

    05:10 min
  • 8
    Manejando enlaces y configuraciones

    Manejando enlaces y configuraciones

    06:33 min

¿Qué es Redux?

  • 9
    Qué es Redux

    Qué es Redux

    02:17 min
  • 10

    ¿Qué es Redux? Profundizando en la herramienta

    01:32 min
  • 11
    Instalación de Redux

    Instalación de Redux

    04:40 min
  • 12
    Creando el Store de Redux

    Creando el Store de Redux

    12:53 min

Aplicando Redux a nuestra aplicación

  • 13
    Creando los reducers

    Creando los reducers

    10:40 min
  • 14
    Finalizando reducers y eliminar favoritos

    Finalizando reducers y eliminar favoritos

    08:26 min
  • 15
    Debuggeando nuestro proyecto (agregando validaciones a nuestro componente card)

    Debuggeando nuestro proyecto (agregando validaciones a nuestro componente card)

    04:19 min
  • 16
    Crear Formulario de Login

    Crear Formulario de Login

    10:08 min
  • 17
    Formulario de Login con Redux

    Formulario de Login con Redux

    06:28 min
  • 18
    Creando un Servicio para Gravatar

    Creando un Servicio para Gravatar

    05:28 min
  • 19
    Uso de gravatar en nuestro proyecto

    Uso de gravatar en nuestro proyecto

    07:16 min
  • 20
    Validación para LogIn LogOut

    Validación para LogIn LogOut

    09:15 min
  • 21
    Register

    Register

    07:00 min
  • 22
    Register con Redux

    Register con Redux

    04:17 min
  • 23
    Vista general del player

    Vista general del player

    05:26 min
  • 24
    Arreglando la funcionalidad del player

    Arreglando la funcionalidad del player

    06:55 min
  • 25
    Terminando de detallar nuestro player

    Terminando de detallar nuestro player

    13:50 min
  • 26
    Validaciones

    Validaciones

    10:35 min
  • 27
    Validaciones de UI

    Validaciones de UI

    Viendo ahora
  • 28
    Debug con Redux Devtools

    Debug con Redux Devtools

    05:57 min

Cierre del curso

  • 29
    Cierre del Proyecto

    Cierre del Proyecto

    00:39 min
  • Tomar el examen del curso
    • David Camacho

      David Camacho

      student•
      hace 6 años

      Estilos del botón:

      .button { background-color: rgba(255, 255, 255, .3); border: none; border-radius: 25px; color: white; cursor: pointer; font-size: 16px; font-weight: bold; font-family: 'Muli', sans-serif; height: 50px; letter-spacing: 1px; margin: 10px 0; }
        Carlos Spagnoletti

        Carlos Spagnoletti

        student•
        hace 6 años

        Gracias por el aporte

        Ginnio Sarabia

        Ginnio Sarabia

        student•
        hace 6 años
      Diego Camino Reinoso

      Diego Camino Reinoso

      student•
      hace 6 años

      PARA TODOS AQUELLOS QUE NO SABEN EN QUE MOMENTO HIZO EL CAMBIO DEL HEADER

      Eso también explica porque en el video anterior vi la etiqueta <Header /> encima de <Search isHome/> en Home.jsx

      AQUÍ ESTÁ EL COMMIT EN EL QUE SUCEDE ESO

      https://github.com/platzi/PlatziVideo/commit/b88411eac8dfd31df54f2f10fb681f9e6119d600

      No entiendo porque no hay clase de aquello?

        Juan Jose Vega

        Juan Jose Vega

        student•
        hace 6 años

        Queeee Es verdad, tal vez porque así se hizo en el curso de React de la escuela, pero podría haberlo mostrado. Saca mucho de contexto

        Luis Carlos Kristen Ospitia

        Luis Carlos Kristen Ospitia

        student•
        hace 6 años

        complemento, que en el commit hace falta agregar lo siguiente:

        en el Register.jsx

        import Header from '../components/Header';

        despues del return agregar también

        &lt;Header isLogin /&gt;
      Jorge Moreno Díaz

      Jorge Moreno Díaz

      student•
      hace 6 años

      Mi solución para poner los estilos adecuados al Header en la página de Login y Register fue usar withRouter de "react-router-dom" para de esta manera obtener la ubicación del path en el que nos encontramos y según el path poner el estilo adecuado.

      En el componente de Layout:

      const Layout = withRouter(({ children, location }) => ( <div className="app"> <Header location={location} /> {children} <Footer /> </div> ));

      En el componente Header:

      <header className={ location.pathname === "/login" || location.pathname === "/register" ? "header header__login-register" : "header" } >
        Wilson Marino Pablo Mendez

        Wilson Marino Pablo Mendez

        student•
        hace 6 años

        Buen aporte!!

        Ivan Santiago

        Ivan Santiago

        student•
        hace 6 años

        ¡Muy buena solución!

      Favio Sauto

      Favio Sauto

      student•
      hace 6 años

      Para instalar classnames solo necesitan usar el comando

      npm install classnames --save
      David Behar

      David Behar

      student•
      hace 6 años

      Recuerden que es necesario importar classnames con

      npm install --save classnames
      Diego Camino Reinoso

      Diego Camino Reinoso

      student•
      hace 6 años

      Me fascina el curso, cada día estoy más enamorado de React pero quisiera agregar algo y es que a lo largo del curso el profesor Oscar no pronuncia correctamente las palabras en inglés y me parece que es vítal en el mundo de la tecnología, no se pronuncia ainput, sino input como suena, y así hay otras palabras que pude notar que las pronuncia mal como: output o public y otras más que está de más mencionarlas, solo como consejo por favor

        Franklin Pineda

        Franklin Pineda

        student•
        hace 6 años

        El pronunciamiento de las palabras es lo de menos porque al fin no estamos en un curso de Ingles, lo importante es el conocimiento y como si imparte, y pienso que aqui no todos hablamos ingles perfecto hay estudiantes como yo que sabemos poco Ingles

        Andrés Campuzano Garzón

        Andrés Campuzano Garzón

        student•
        hace 6 años

        @pndafran El inglés es demasiado importante. Si sabes poco Inglés, ya sabes que priorizar en tus estudios. Saludos.

      David Vargas Domínguez

      David Vargas Domínguez

      student•
      hace 6 años

      Use entidades para agregar ese pequeño espacio en el login.

      &lt;p className='login__container--register'&gt; No tienes ninguna cuenta, &amp;thinsp; &lt;Link to='register'&gt;Regístrate&lt;/Link&gt; &lt;/p&gt;
        Jhon Manuel Angulo Moncada

        Jhon Manuel Angulo Moncada

        student•
        hace 6 años

        muy bueno lo de la entidad, andaba buscando algo así para casos mas complejos. pero en el caso de este ejercicio solo había que poner un espacio antes del Registrarse y ya =).

        &lt;p className=&quot;login__container--register&quot;&gt;No tienes ninguna cuenta, &lt;Link to=&quot;/register&quot; &gt; Regístrate&lt;/Link&gt; &lt;/p&gt;
      Jose Colmenares

      Jose Colmenares

      student•
      hace 6 años

      Alguien me recuerda cuando utilizamos import classNames from 'classnames', no recuerdo haberlo utilizado antes

        Jesús Miguel Quinto Teran

        Jesús Miguel Quinto Teran

        student•
        hace 6 años

        **No en este curso. **

        para instalar classname: npm install classnames --save

        uso: classname te permite unir clases css dinamicamente.

        ejemplos:

        classNames('foo', 'bar'); // => 'foo bar' classNames('foo', { bar: true }); // => 'foo bar' classNames({ 'foo-bar': true }); // => 'foo-bar' classNames({ 'foo-bar': false }); // => '' classNames({ foo: true }, { bar: true }); // => 'foo bar' classNames({ foo: true, bar: true }); // => 'foo bar'

        Para mas información: https://www.npmjs.com/package/classnames

      Seba Cardoso

      Seba Cardoso

      student•
      hace 6 años

      Con poner el border-radius: 50% es suficiente para que se redondee. El espacio se puede arreglar con un margin, padding o agregando esto al jsx

      <p className = "login__container--register" > No tienes ninguna cuenta &nbsp;
      Carlos Junior Carpio Carnero

      Carlos Junior Carpio Carnero

      student•
      hace 6 años

      hacer el npm install classnames --save antes de correr!

      jorge llanque

      jorge llanque

      student•
      hace 5 años
      &nbsp;
      Iair Poloniecki

      Iair Poloniecki

      student•
      hace 6 años

      Tampoco entiendo de dónde sale el isHome, en qué clase se vio eso?

        Juan Castro

        Juan Castro

        teacher•
        hace 6 años

        Solo debes agregar la propiedad isHome al componente <Search /> en el archivo containers/Home.jsx: https://github.com/platzi/PlatziVideo/commit/a98ab28dee0d5b929c43fd3abdd86043eb59b74a#diff-d1bc95afe81aa0d5125ba66567b63455. :wink:

        Juan Jose Vega

        Juan Jose Vega

        student•
        hace 6 años

        Y <Header />

      Steven Benjamín Diaz Flores

      Steven Benjamín Diaz Flores

      student•
      hace 6 años

      Para arreglar el color del header lo que hice fue crear una validación para verificar en que pagina nos encontramos, y dependiendo de eso mostrar el header morado o verde:

      ... let headerClass = '' if (path === '/login' || path === '/register') { headerClass = 'header__green' } else if (path === '/') { headerClass = 'header' } else { headerClass = 'd-none' } return ( <header className={headerClass}> <Link to="/"> <img className="header__img" src={logo} alt="Platzi Video" /> </Link> ...

      Lo que hago es consultar desde el estado una variable path, la que me indica en que pagina me encuentro actualmente, ya que no puedo acceder al location.pathname desde header, para que esto funcione hice un action y un reducer que actualice el pathname actual, y llamarlo en cada pagina en la que navega, no se si sea la solucion más eficaz pero me ayudo a practicar un estado global de mi sitio web utilizando redux

        Aram Ceballos

        Aram Ceballos

        student•
        hace 6 años

        Tambien puedes instalar el paquete path de npm y te ahorras el tener que hacer un reducer y un action creator

        Oscar Barajas Tavares

        Oscar Barajas Tavares

        Team Platzi•
        hace 6 años

        Me gusta la solución, lo que nos propone Aram es interesante, compartan sus soluciones.

      Cristian Caraballo

      Cristian Caraballo

      student•
      hace 6 años

      Error de compilacion.. ¿que es classnames?

      ERROR in ./src/components/Search.jsx Module not found: Error: Can't resolve 'classnames' in '/home/leonardo/Documentos/GitHub/Platzi/curso practico de React/PlatziVideo/src/components' @ ./src/components/Search.jsx 2:0-36 7:19-29 @ ./src/containers/Home.jsx @ ./src/routes/App.js @ ./src/index.js
        Joel Bello

        Joel Bello

        student•
        hace 6 años

        npm install classnames --save

      Andrés Campuzano Garzón

      Andrés Campuzano Garzón

      student•
      hace 6 años

      🦄 Acá el código del proyecto al momento:

      https://github.com/AndresCampuzano/React-Router-and-Redux/commits/master

      Yo solucioné los diferentes colores del Header de la siguiente manera:

      Login.jsx:

      import Header from '../components/Header'; ... <Header setColor='green' />

      Register.jsx:

      import Header from '../components/Header'; ... <Header setColor='green' />

      Header.jsx:

      const { user, setColor } = props; const inputStyle = classNames('header', setColor); //style header

      Header.scss

      // Dynamic CSS .green { background: #21c08b; } .red { background: #ff1100; } // -----------

      Noten que pueden usar diferentes colores como .red usando <Header setColor='red ' />

        Daniel Alcudia

        Daniel Alcudia

        student•
        hace 6 años

        solo que ya no estarías usando el Layout no?

        Andrés Campuzano Garzón

        Andrés Campuzano Garzón

        student•
        hace 6 años

        Correcto

      Alexander Henry Obispo Buendia

      Alexander Henry Obispo Buendia

      student•
      hace 6 años

      Yo no tuve ningún problema con los estilos, ya que hice un buen sass desde el curso de frontend developer, con mejores practicas y pensando en componentes, e implemente react Helmet para unos cunatos bugs que se me generaban principalmente con el background del body.

        David Camacho

        David Camacho

        student•
        hace 6 años

        De pronto el css del curso de Frontend no fue muy pulido... Sin embargo no esta de más aprender a hacer este tipo de validaciones, tarde o temprano tocará hacerlas.

      Alejandro González Reyes

      Alejandro González Reyes

      student•
      hace 6 años

      Para ser honestos, React le falta mucho soporte en este sentido. Es horrenda esta forma.

        Oscar Barajas Tavares

        Oscar Barajas Tavares

        Team Platzi•
        hace 6 años

        Es cuestión de perspectiva, pero hay mucho por mejorar sin duda, en lo personal me gusta trabajar con styled components.

        Alexander Henry Obispo Buendia

        Alexander Henry Obispo Buendia

        student•
        hace 6 años

        El problema no es react si no los estilos que fueron muy mal escritos..., yo me evite todos estos problemas escribiendo un buen sass

      Daniel Esteban Santos Mendez

      Daniel Esteban Santos Mendez

      student•
      hace 5 años

      Se me hace innecesario la validación del input del Search, a mi nunca me afecto eso el tamaño, solo los borders de los inputs del Login y Register los tomo el Search, pero agregue otro nombre a la clase ej: input-login, input-register y ya. Aunque como enseñanza esta perfecto.

        Martin Paez

        Martin Paez

        student•
        hace 5 años

        Tienes razon. Depende mucho de la organizacion de nuestro SASS. Aunque esta cool tener esta opcion para resolver problemas a futuro donde sea mas complicado modificar los estiloso que podamos sacar magicamente algun feauture :)

      Iair Poloniecki

      Iair Poloniecki

      student•
      hace 6 años

      En qué curso se ve esto de classnames?? Porque empieza diciendo que lo vimos, y yo no lo recuerdo

        Cristobal Vega

        Cristobal Vega

        student•
        hace 6 años

        x2

        Juan Castro

        Juan Castro

        teacher•
        hace 6 años

        Se refiere a la estructura y estilos que construimos en los Cursos de Frontend Developer y React JS Práctico. :wink:

        :point_right: https://platzi.com/clases/frontend-developer/ :point_right: https://platzi.com/clases/react-ejs/

      Fredy Sarmiento

      Fredy Sarmiento

      student•
      hace 6 años

      Uncaught Error: Cannot find module 'classnames' at webpackMissingModule (Search.jsx:6) at eval (Search.jsx:6) at Module../src/components/Search.jsx (bundle.js:1462) at webpack_require (bundle.js:20) at eval (Home.jsx:5) at Module../src/containers/Home.jsx (bundle.js:1474) at webpack_require (bundle.js:20) at eval (App.js:5) at Module../src/routes/App.js (bundle.js:1558) at webpack_require (bundle.js:20)

      me aarece ese error al declarar el classnames de search.jsx

      alguien sabe que puede ser

        Andrés Chapetón

        Andrés Chapetón

        student•
        hace 6 años

        Utiliza npm install classnames --save

    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