CursosEmpresasBlogLiveConfPrecios

PropTypes y Render

Clase 9 de 33 • Curso Profesional de React.js 2017

Clase anteriorSiguiente clase

Contenido del curso

Introducción a ReactJS
  • 1

    Código del proyecto

    00:02
  • 2
    ¿Qué es React.js?

    ¿Qué es React.js?

    08:18
  • 3
    Del escritorio al browser: Single Page Apps

    Del escritorio al browser: Single Page Apps

    05:15
  • 4
    Patrones de arquitectura en Frontend

    Patrones de arquitectura en Frontend

    09:15
  • 5
    Filosofia de Componentes

    Filosofia de Componentes

    03:33
  • 6
    Componente básico con React

    Componente básico con React

    05:56
  • 7
    React Developer Tools

    React Developer Tools

    02:04
  • 8
    Hola mundo en React.js

    Hola mundo en React.js

    21:41
  • 9
    PropTypes y Render

    PropTypes y Render

    27:42
  • 10
    Creando mas componentes

    Creando mas componentes

    07:56
  • 11
    Preguntas y Respuestas

    Preguntas y Respuestas

    23:46
  • 12

    Conceptos básicos de JSX y ReactJS

    02:55
  • 13

    Empieza con ReactJS, la librería Javascript de Facebook

    01:47
  • 14

    Cómo definir una vista con ReactJS

    07:55
  • 15

    Cómo usar Web Components con ReactJS y AngularJS

    02:51
Ciclo de vida de un componente, States, Props y Browserify
  • 16
    Instalacion de Browserify

    Instalacion de Browserify

    29:41
  • 17
    Teoría sobre ciclos de vida en ReactJS

    Teoría sobre ciclos de vida en ReactJS

    19:23
  • 18
    Event handling, State y Browserify

    Event handling, State y Browserify

    43:48
  • 19
    Integración con Librerías de Terceros

    Integración con Librerías de Terceros

    06:01
  • 20
    Preguntas y Respuestas

    Preguntas y Respuestas

    26:06
  • 21

    Cómo filtrar una lista con ReactJS

    01:35
  • 22

    Manejo de datos en tiempo real con RethinkDB y ReactJS

    02:17
Realtime y rutas con ReactJS
  • 23
    Tools CSS: Reset

    Tools CSS: Reset

    11:27
  • 24
    La teoría detrás de una aplicación RealTime

    La teoría detrás de una aplicación RealTime

    15:33
  • 25
    Realtime apps en ReactJS

    Realtime apps en ReactJS

    11:47
  • 26
    Animaciones en ReactJS

    Animaciones en ReactJS

    12:53
  • 27
    Complementando con Socket.io

    Complementando con Socket.io

    24:10
  • 28
    Creación de Rutas con ReactRouter

    Creación de Rutas con ReactRouter

    23:38
  • 29
    Preguntas y Respuestas

    Preguntas y Respuestas

    22:57
Complementos del curso
  • 30
    Flux

    Flux

    00:00
  • 31
    Cómo manejar rutas con Page.js

    Cómo manejar rutas con Page.js

    00:00
  • 32

    Testing de componentes de React con Jest

    07:54
  • 33

    Guía de actualización desde React.js v0.13

    03:10
    Raúl Grijalva

    Raúl Grijalva

    student•
    hace 10 años

    Todo muy bien, excepto que Pikachu no evoluciona por nivel sino con la piedra trueno. :P

    Vinicio Jose Valbuena

    Vinicio Jose Valbuena

    student•
    hace 10 años
    /* DISCULPEN EL SPAN NO ENCONTRE COMO ELIMINAR LOS QUE HICE MAL Me gustaria saber si utilizo ES5, como puedo hacer un render si debo pasar un string como html? se hacerlo con ES6 y COFFEE sin problemas mas quiero aprender con ES5 que tambien me interesa. */ var HelloWork = React.createClass({ render: function() { return '<p>HelloWork</p>'; } });
      Cristian Martinez

      Cristian Martinez

      student•
      hace 10 años

      No uses comillas simples.

      var HelloWork = React.createClass({
      render: function() {
      return <p>HelloWork</p>;
      }
      });

      Sergio Daniel Xalambrí

      Sergio Daniel Xalambrí

      student•
      hace 10 años

      De esta forma:

      var HelloWork = React.createClass({   render: function() {     var props = null; // null si no hay props, un objeto si hay     return React.createElement(       'p',       props,       'HelloWork'     );   }, });

      Y el render haces:

      ReactDOM.render(   React.createElement(HelloWork, null),   document.getElementById('app') );
    Vicente

    Vicente

    student•
    hace 10 años

    ¡Buenos días!

    Analizemos las siguiente tres líneas:

    var nombre="Mortadelo y Filemón"
    React.render(<MyComp name={nombre} />, document.getElementById('container'))
    nombre = "Bart Simpson"

    Aunque no conozcamos el código de MyComp no es difícil imaginar que las dos primeras líneas de las tres citadas, se encargarían de parametrizar y renderizar el componente MyComp y en algún sitio aparececerían Mortadelo y Filemón.

    El cambio sobre la variable nombre que hacemos en la tercera línea sería ignorado por MyComp a menos que no volvamos a renderizar el componente repitiendo de nuevo la línea dos. No digo que eso no sea válido. Sin embargo, a raiz de unos ejemplos que hice con Angular, creo que es necesario conseguir aunar la nitidez en la creación del comoponente que ofrece React, con algo que nos de el doble binding de Angular. Pero la solución no sería desde mi punto de vista complementar React con Angular, lo que me parece matar moscas a cañonazos, sino que esos jóvenes tan espabilados que que están en el mundo de la programación nos regalen como siempre hacen una pequeña librería para resolver el tema o que alguien nos diga como se llama la solución (la librería) que posiblemente esté ya hecha: Lo que se re pretende es que React realice un autorender() cuando alguno de los parámetros de un componente cambie, para lo cual dichos parámetros deberían registrarse en algún lugar vigilado al estilo de "livreloading" o mejor dicho con algún "gulp watching" pero que watchee memoria en lugar de ficheros. Concretando, que en las tres líneas del principio, la ejecución de la tercera línea implique la ejecución automática de la segunda. Es lo primero que se me ocurre y posiblemente sean solo palabras y no una idea realizable. En fin, no se si con esto último la he he liado más y se nota que efectivamente huelo la libre pero desde muy lejos. Disculpen si encuentran palabras o expresiones con escaso significado o incluso carente de él, no es mi intención molestar a nadie.

    Saludos
    Vicent

    Keven saldana

    Keven saldana

    student•
    hace 10 años

    Me podrían decir por favor los paquetes para atom que usa el profesor?? :)

    Aitor Ibañez

    Aitor Ibañez

    student•
    hace 9 años

    El sprite que se usa para sacar los diferentes pokemons da 404.

    Estaría bueno alguna sesión actualizada a la última version de ReactJS.

    :-)

    Daniel Hernández

    Daniel Hernández

    student•
    hace 10 años

    Alguien sable del paquete para sublime text para ECMA6 con react?

    Vinicio Jose Valbuena

    Vinicio Jose Valbuena

    student•
    hace 10 años
    /* Me gustaria saber si utilizo ES5, como puedo hacer un render si debo pasar un string como html? se hacerlo con ES6 y COFFEE sin problemas mas quiero aprender con ES5 que tambien me interesa. var HelloWork = React.createClass({ render: function() { return '<p>HelloWork</p>'; } });
    Jonhathan Rolando rodas

    Jonhathan Rolando rodas

    student•
    hace 9 años

    Hasta el momento me gusto mucho el curso, pero aun es valido para la versión  actual?

      Sergio Daniel Xalambrí

      Sergio Daniel Xalambrí

      student•
      hace 9 años

      En grandes rasgos sí, hay diferencias con la versión actual pero no son muchas y es posible actualizarse fácilmente desde la v0.13 a la v15 (actual), en el listado de tutoriales del curso hay una guía de actualización que escribí donde podés ver los cambios que hubo que requieran modificar código (hay muchos internos de performance que no requieren cambiar nada).

    Joshua Torres

    Joshua Torres

    student•
    hace 10 años

    Hola todo va perfecto hasta que cuando pongo la url, var url='http://veekun.com/dex/media/pokemon/main-sprites/x-y/${this.props.number}.png';
    la puse de esta manera porque con comillas invertidas me marcaba error de sintaxis, de esta forma ya no me marca error pero me manda el siguiente mensaje GET http://veekun.com/dex/media/pokemon/main-sprites/x-y/$%7Bthis.props.number%7D.png 404 (Not Found) supongo que no esta reconociendo el parametro y lo toma como texto, espero puedan ayudarme gracias! :)

      Ruperto Coronado

      Ruperto Coronado

      student•
      hace 10 años
      var url = `http://veekun.com/dex/media/pokemon/main-sprites/x-y/${this.props.number}.png`;

      Son comillas invertidas, copia y pega toda la línea a ver que pasa, por favor.

    Jahaziel Ortiz Barrios

    Jahaziel Ortiz Barrios

    student•
    hace 10 años

    Components siempre empiezan con mayúsculas 

    Vinicio Jose Valbuena

    Vinicio Jose Valbuena

    student•
    hace 10 años
    /* Me gustaria saber si utilizo ES5, como puedo hacer un render si debo pasar un string como html? se hacerlo con ES6 y COFFEE sin problemas mas quiero aprender con ES5 que tambien me interesa. /* var HelloWork = React.createClass({ render: function() { return '<p>HelloWork</p>'; } });
    Vinicio Jose Valbuena

    Vinicio Jose Valbuena

    student•
    hace 10 años
    /* Me gustaria saber si utilizo ES5, como puedo hacer un render si debo pasar un string como html? se hacerlo con ES6 y COFFEE sin problemas mas quiero aprender con ES5 que tambien me interesa. */ var HelloWork = React.createClass({ render: function() { return '<p>HelloWork</p>'; } });
    Juan Castro

    Juan Castro

    teacher•
    hace 10 años

    <<   `   >>    =   <<   Alt Gr   +   }   >>>

      Lucho A. J. Suárez

      Lucho A. J. Suárez

      student•
      hace 10 años

      Eso depende del idioma y configuración de tu teclado

    Rudy Marca

    Rudy Marca

    student•
    hace 10 años

    Un error que me paso, talvez a alguien le pase.

    class PokeRow extends React.Component { render() { return <div> <PokeAvatar number={this.props.number} /> {this.props.name} </div> } }

     Pasa que cuando retornas algo (return), tiene que seguir en la misma linea.

    José María Carro López

    José María Carro López

    student•
    hace 9 años
    a mí está parte del código no me funciona:              var url =`http://veekun.com/dex/media/pokemon/main-sprites/x-y/${this.props.number}.png`;;                           return <div>                 <img src={url} />

    terminé eliminando la variable y poniendo en el elemento <img> la url directamente, sin hacerlo interactiva

    Daniel Hernández

    Daniel Hernández

    student•
    hace 10 años

    var vs let, cual es la diferencia?

      Saul Navarro V

      Saul Navarro V

      student•
      hace 10 años

      Las dos se usan para declarar las variables, solamente que una es usada y soportada en ECMAScript 2015 es es "let", "var" también es soportada, a pesar de que es de ES5, 

      Alvaro Robles

      Alvaro Robles

      student•
      hace 10 años

      La diferencia es el alcance de la variable declarada, var tiene una visibilidad global dentro de la funcion y let del bloque.

    Francisco Eris

    Francisco Eris

    student•
    hace 10 años

    Se agradece,  todo va quedando claro hasta el momento.

    Mariana Serrano Arévalo

    Mariana Serrano Arévalo

    student•
    hace 10 años

    mm Hago lo que esta en el video y propTypes no me sirve, me dice que string y number no aparecen en la consola, alguien sabe por que ocurre esto? 

      carlos larico LF.

      carlos larico LF.

      student•
      hace 10 años

      se un poco mas especifico.

      Ricardo Andres Velasquez Alvis Velasquez A.

      Ricardo Andres Velasquez Alvis Velasquez A.

      student•
      hace 10 años

      Intenta escribiendo React.PropTypes con la letra 'P' en mayúscula mas no en minúscula. 

    Carlos Pedroza

    Carlos Pedroza

    student•
    hace 10 años

    a mi no me funciona :
    var url = 'http://veekun.com/dex/media/pokemon/main-sprites/x-y/$(this.props.number}.png';
    da un error
    GET http://veekun.com/dex/media/pokemon/main-sprites/x-y/$%7Bthis.props.number%7D.png 404 (Not Found)
    tube que modificarlo a:

                            var url = 'http://veekun.com/dex/media/pokemon/main-sprites/x-y/' + this.props.number + '.png';

      Sergio Márquez Márquez

      Sergio Márquez Márquez

      student•
      hace 10 años

      Hola cursoscapetisoft,
      funciona igualmente si pones la comilla invertida <http://veekun.com/dex/media/pokemon/main-sprites/x-y/${this.props.number}.png>; en vez de comilla normal 'http://veekun.com/dex/media/pokemon/main-sprites/x-y/${this.props.number}.png';

      Un saludo.

      Paco Guevara

      Paco Guevara

      student•
      hace 10 años

      Al principio tienes un paréntesis que abre y después una llave que cierra 

      $(this.props.number}.png

      Debería ser con llaves

      ${this.props.number}.png

      Saludos!

    Cesar Ivan Segura

    Cesar Ivan Segura

    student•
    hace 10 años

    Estoy empezando en react, y note esto, cuando quise cambiar el nombre del pokemon al de su evolucion pero no cambie el nivel asi que ni siquiera agrege la propiedad pero despues de 5seg el nivel es eliminado, como pudeo hacer si solo quiero cambiar el nombre pero mantener el nivel? 

    <script type="text/jsx;harmony=true">     class HelloWorldComponent extends React.Component{         render(){             return <h1>{this.props.name} evoluciona en el nivel {this.props.level}</h1>         }     }     HelloWorldComponent.propTypes = {         name: React.PropTypes.string,         level: React.PropTypes.number     };     React.render(< HelloWorldComponent name="pikachu" level={25}/>, document.getElementById('container'));     setTimeout(() => {         React.render(< HelloWorldComponent name="Raychu"/>, document.getElementById('container'));     }, 5000) </script>
      Andrés Felipe Eslava Zuluaga

      Andrés Felipe Eslava Zuluaga

      student•
      hace 9 años

      Pues tiene que pasarle el parametro del nivel. Basicamente lo que tiene pero con level={25}
      Recuerde que se va a modificar el componente mediante el estado, si no define el estado pues la lógica dice: ‘OK, el estado no existe; renderizo…’

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