CursosEmpresasBlogLiveConfPrecios

Componente: Layout

Clase 7 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

    Viendo ahora
  • 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

    07:04 min
  • 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
    • Cristian Florez

      Cristian Florez

      student•
      hace 6 años

      pase cuatro horas buscando por que no no me pintaba y me doy cuenta que escribi Childrem con m es es children con n

        Diego Camino Reinoso

        Diego Camino Reinoso

        student•
        hace 6 años

        jajajajajja, suele pasar

        Julio Villa

        Julio Villa

        student•
        hace 6 años

        me pasó lo mismo...tuve que copiar y pegar desde el componente de carousel jajajaja XD

      Seba Cardoso

      Seba Cardoso

      student•
      hace 6 años

      Yo moví esta línea de Home a Layout

      import '../assets/styles/App.scss'

      Funciona de cualquier manera. Solo por lectura me parece mas práctico.

        Bernardo Aguayo Ortega

        Bernardo Aguayo Ortega

        student•
        hace 5 años

        me gusta

      Daniel Lopez

      Daniel Lopez

      student•
      hace 6 años

      Lo que mas me llama la atension es la presicion con la que explica este profesor. Es bastante breve y conciso.

        Henry Caicedo Velasco

        Henry Caicedo Velasco

        student•
        hace 5 años

        totalmente deacuerdo.

        César Palma

        César Palma

        student•
        hace 5 años

        Oscar es buen profe pero hay todo un equipo atras ademas de años de experiencia dictando cursos de programación en este formato, si se fijan estan sacando contenido del curso de react de richard kaufman pero organizandolo mejor de manera que el contenido te llegue justo cuando lo necesites y no te sobrecarguen de conocimientos un mejor equilibrio teoria/practica

      Arantxa Giovanna Rosas Del Valle

      Arantxa Giovanna Rosas Del Valle

      student•
      hace 6 años

      ¿Por qué layout es un component y no un container?

        Iván Darío Sánchez Jiménez

        Iván Darío Sánchez Jiménez

        student•
        hace 6 años

        Para evitar que se renderizen componentes que no requieren constante actualización. Si te fijas el header y footer va a ser constante en todo el sitio asi que es como dejarlos fijos.

        Miguel Angel Reyes Moreno

        Miguel Angel Reyes Moreno

        student•
        hace 5 años

        ¡Buena pregunta y buena respuesta! Gracias a ambos :)

      Miguel Angel Reyes Moreno

      Miguel Angel Reyes Moreno

      student•
      hace 5 años

      Layout es un component y no un container para evitar que se renderizen componentes que no requieren constante actualización. Como el header y footer van a ser constantes en todo el sitio, como dejarlos fijos.

      Creamos Layout.jsx:

      import React from 'react'; import Header from './Header'; import Footer from './Footer'; const Layout = ({ children }) => ( <div className='App'> <Header /> { children } <Footer /> </div> ); export default Layout;

      Envolvemos el Switch en el Layout:

      import React from 'react'; import { BrowserRouter, Switch, Route } from 'react-router-dom'; import Home from '../containers/Home'; import Login from '../containers/Login'; import Register from '../containers/Register'; import NotFound from '../containers/NotFound'; import Layout from '../components/Layout'; const App = () => ( <BrowserRouter> <Layout> <Switch> <Route exact path='/' component={Home} /> <Route exact path='/login' component={Login} /> <Route exact path='/register' component={Register} /> <Route component={NotFound} /> </Switch> </Layout> </BrowserRouter> ); export default App;

      Y en Home.jsx eliminamos las etiquetas de Home y Footer, además de envolver todo en picoparéntesis (o React Fragments).

      Santiago Lopera Naranjo

      Santiago Lopera Naranjo

      student•
      hace 5 años

      Esto se concidera una SPA, ¿cierto?

        Jaime David Burbano Montoya

        Jaime David Burbano Montoya

        student•
        hace 5 años

        Si

      Saul Felipe Ramirez

      Saul Felipe Ramirez

      student•
      hace 6 años

      ¿Como puedo crear multiples Layouts? por ejemplo, este para el sitio web y otro layout para el administrador del portal.

        Oscar Barajas Tavares

        Oscar Barajas Tavares

        Team Platzi•
        hace 6 años

        Puedes crearlos dentro de los containers, todo es cuestión de organizar la estructura de tu proyecto.

        Eleonora Lester

        Eleonora Lester

        student•
        hace 6 años

        Tenes que rutear tu aplicación para que un path vaya a un layout y otro path vaya a otro.

        <Router> <Switch> <Route exact path="/"> <Redirect to="/layout1" /> </Route> <LoginLayoutRoute path="/layout1" component={LoginPage} /> <DashboardRoute path="/layout2" component={UserPage} /> </Switch> </Router>

        Si ingresas a / (solo /) te redirecciona a layout1 pero si ingresas a /layout2 te devuelve un layout distinto (mejor dicho una page distinta).

        Me parece útil el concepto de paginas para cuando tenes cosas totalmente distintas entre sí.. LoginPage / UserPage

        El ejemplo está tomado de acá https://www.c-sharpcorner.com/article/multiple-layout-in-react-with-react-router-v4/

      Nelson Gonzalez Escalante

      Nelson Gonzalez Escalante

      student•
      hace 5 años

      Para que la aplicación maneje el encabezado y pie de página cada vez que nos movemos dentro de una ruta que ya establecimos, debemos crear un nuevo componente de diseño que se encargará de la persistencia del encabezado y pie de página, y así cada vez que nos movamos dentro de una ruta hagamos el renderizado del componente que necesitamos.

      Raúl Camacho

      Raúl Camacho

      student•
      hace 5 años

      Otra forma de hacer esto es simplemente en el Router (App.js donde están las rutas), hacer algo así, tiene el mismo funcionamiento.

      const App = () => ( <Router> <Header /> ------> Aquí <Switch> <Route exact path="/login" component={Login} /> <Route exact path="/register" component={Register} /> <Route exact path="/" component={Home} /> <Route component={NotFound} /> </Switch> <Footer /> ------> Aquí </Router> );
      Saul Felipe Ramirez

      Saul Felipe Ramirez

      student•
      hace 6 años

      ¿Como usar multiples layouts? Ejm: una es la pagina al publico y la otra es el portal de administración del sitio y es totalmente diferente ya que es un dashboard.

        Oscar Barajas Tavares

        Oscar Barajas Tavares

        Team Platzi•
        hace 6 años

        En el curso de Server Side Rendering aprenderás a realizar esta configuración dentro del proyecto, tendremos secciones privadas que solo estarán disponibles cuando conectemos con el backend.

        Alexis Alberto Texis Auza

        Alexis Alberto Texis Auza

        student•
        hace 6 años

        Hola si te refieres a la maquetación,una solución seria manejar tu wraper de layout en cada container o pagina de forma independiente y no de forma global como se esta haciendo. Ejemplo :

        //pagina Home <Layout> <Componente1/> ... <Layout/> //page admin <LayoutAdmin> <Componente1/> ... <LayoutAdmin/>
      Juan Daniel Martínez Navarro

      Juan Daniel Martínez Navarro

      student•
      hace 5 años

      Que buena clase, hasta el momento no me ha fallado nada. Sólamente quiero comprender como es que al poner la etiqueta Layout no le tuvimos que especificar el children como normalmente lo hacíamos cuando recibía parámetros el componente, algo así:

      <Layout children={component}> </Layout>

      Estaría agradecido si me pudieran explicar como es que tan solo poniendo lo del Switch dentro de Layout esto funciona perfectamente.

        Jose Anibal Garcia Giraldo

        Jose Anibal Garcia Giraldo

        student•
        hace 5 años

        Intentaré responderte como yo lo entendí, si te fijas pedimos la prop en medio de los dos componentes por que allí recibiremos otro componente, en el que caso que lo quisiéramos recibir como atributo lo haríamos como en el componente CarouselItem así:

        2020-09-01_11h17_51.png

        Como vez aquí la prop que se pide se hace como atributo. Para que entiendas un poco mejor puedes ver ejemplo del componente Categories

        2020-09-01_11h17_02.png

        Aquí pedimos un hijo que serán las cards y por otro lado el nombre que tendrá el title.

        Espero haber resuelto tu duda.

      Camilo Fernández

      Camilo Fernández

      student•
      hace 5 años

      Chaildren

      Marco Luna

      Marco Luna

      student•
      hace 6 años

      Esto responde mi pregunta hecha en la clase anterior 😁

      Tomas Goldenberg

      Tomas Goldenberg

      student•
      hace 6 años

      el header see me duplica!

        Ernesto Briceño

        Ernesto Briceño

        student•
        hace 6 años

        tienes que borrarlo del home

      Kamerr Ezz

      Kamerr Ezz

      student•
      hace 5 años

      ES HERMOSO !!

      ANTHONY JEAMPIER RANGEL RODRIGUEZ

      ANTHONY JEAMPIER RANGEL RODRIGUEZ

      student•
      hace 5 años

      Les comparto mi codigo

      components/Layout.jsx

      import React from "react"; import Header from "../components/Header"; import Footer from "../components/Footer"; const Layout = ({ children }) => { return ( <div className="App"> <Header /> {children} <Footer /> </div> ); }; export default Layout;

      routes/App.js

      import React from "react"; import { BrowserRouter, Route, Switch } from "react-router-dom"; import Home from "../containers/Home"; import Login from "../containers/Login"; import Register from "../containers/Register"; import NotFound from "../containers/NotFound"; import Layout from "../components/Layout"; const App = () => { return ( <BrowserRouter> <Layout> <Switch> <Route exact path="/" component={Home} /> <Route exact path="/login" component={Login} /> <Route exact path="/register" component={Register} /> <Route component={NotFound} /> </Switch> </Layout> </BrowserRouter> ); }; export default App;
      Christian Juan Tambo Coaquira

      Christian Juan Tambo Coaquira

      student•
      hace 5 años

      Layout


      Se encarga de manejar la persistencia del header y footer.

      Jean Carlos Hallak

      Jean Carlos Hallak

      student•
      hace 5 años

      yo ya habia agregado el header y el footer a todo manual mente lol... bueno sirvió de practica

      Jimmy Buriticá Londoño

      Jimmy Buriticá Londoño

      student•
      hace 5 años

      Persistencia: siempre tener el mismo Header y Footer en todas las páginas.

      Juan Esteban Orozco Botero

      Juan Esteban Orozco Botero

      student•
      hace 4 años

      En la v6 de React Router ya no se coloca children, si no que en el component Layout.jsx se coloca un Outlet y en la route App.js se crea la etiqueta Route con Layout, pero no se cierra:

      1. Layout.jsx
      import React from 'react'; import Header from './Header'; import Footer from './Footer'; import {Outlet} from "react-router-dom"; import '../assets/styles/components/Register.scss' const Layout = () => ( <div className='App'> <Header/> <Outlet /> <Footer/> </div> ) export default Layout;
      1. App.js (route)
      import React from "react"; import { BrowserRouter, Routes, Route } from "react-router-dom"; import Home from "../containers/Home.jsx"; import Login from "../containers/Login.jsx"; import Register from "../containers/Register.jsx"; import NotFound from "../containers/NotFound.jsx"; import Layout from "../components/Layout.jsx"; const App = () => { return ( <BrowserRouter> <Routes> <Route path="/" element={<Layout/>} > <Route index element={<Home/>} /> <Route path="/login" element={<Login/>} /> <Route path="/register" element={<Register/>}/> <Route path="*" element={<NotFound/>}/> </Route> </Routes> </BrowserRouter> ) }; export default App;
        Stevenson Grajales

        Stevenson Grajales

        student•
        hace 3 años

        Tarde hora de las RE horas viendo por qué no me funcionaba si lo tenía igual xD akjshdas Pos no me había dado cuenta que las rutas "cabecera" se cierran con la etiqueta por fuera de todas las etiquetas "hijas", horas para ver eso :'v

    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