SlideShare una empresa de Scribd logo
1 de 28
Descargar para leer sin conexión
Aplicaciones móviles multiplataforma con React
Native y Redux
Presenta tus ideas en Quito Lambda!
Si tienes algo interesante que presentar,
¡ven a presentar con nosotros!
Programación Funcional, DevOps, Cloud Computing, IaaS, Desarrollo Web, React, WebGL, ReasonML
y cualquier cosa interesante
info@stackbuilders.com
Introducción
La diversidad y complejidad del desarrollo web se ha trasladado a lo mobil:
● Gran variedad de plataformas y dispositivos.
● Muchas versiones de sistemas operativos.
● UX.
● Tooling
● Separación de responsabilidades y testability.
React
Principios
● Escribir HTML usando JavaScript, incluso con sintaxis como HTML (JSX).
● Componentes reutilizables y componibles.
● Especifica cómo quieres que se vea, no los cambios que deben ocurrir
(VirtualDOM).
● Las vistas son una función del estado.
● Los datos (y el comportamiento) fluyen en una única dirección:
○ De componentes contenedores a componentes contenidos.
● Es sólo JavaScript.
JavaScript XML (JSX)
React.createElement(component, props, ...children)
Componentes
● Representan una abstracción sobre un elemento de la UI.
● Son independientes.
● Permiten componer comportamiento.
● Tienes dos tipos de atributos:
○ props
○ state
Stateful vs Stateless
PropTypes
PropTypes
● Definir un contrato para las
propiedades.
● Capturar errores en runtime.
● Tener errores más explícitos.
React Native
React Native
Ya sabías JavaScript y React? Que pasara si te digo que ya estás listo para hacer
aplicaciones tanto para IOS y Android?
React-Native - Scaffolding
Gracias a Expo Puedes tener un proyecto y un entorno de desarrollo con tan solo
unos comandos.
exp init my-new-project
cd my-new-project
exp start
React-Native - Testing
Adicionalmente, Jest nos proporciona un framework de testing versátil que se
adapta fácilmente a nuestros componentes de React.
Redux
Los 3 Principios
● Única fuente de verdad
○ Todo se reduce a un store que intuitivamente es como un mapa cuyos valores apuntan a
estados más granulares.
● El estado es de solo lectura.
○ No mas setState dentro de tus views.
● Los cambios son realizados con funciones puras.
○ Acciones puras.
○ Reducers puros.
○ Thunks que se puede inyectar.
Easy as 1-2-3!
Overview
Actions
● Son objetos planos de JS.
● Son una composición de un type y un payload.
● No tienen efectos secundarios.
Actions - TypeScript al rescate!
Async Actions
No todos nuestros programas pueden ser puros. Mucho menos una interfaz
gráfica tan susceptible a side effects tanto de la mano del usuario como de APIs
externas.
State
● Contiene el estado global de mi aplicación.
○ Ya no tengo un estado distribuido entre muchos componentes, ni tengo que buscarme la vida
para coordinar todos esos componentes.
● Cada componente puede suscribirse a la parte que le interese del estado
global.
● El estado es inmutable.
Reducers
● Convierten un acción en un cambio en el estado.
○ En realidad construyen un nuevo estado con la acción y el estado anterior.
● No tienen efectos secundarios.
Separando la lógica de la presentación
Redux promueve un patrón de arquitectura de software que nos permite separar
completamente los componentes presentacionales de aquellos que manipulan la
lógica de nuestra interfaz.
Demo
Talk is cheap, show me the code!
Preguntas?
Stack Builders
Presenta tus ideas
info@stackbuilders.com
Trabaja con nosotros
stackbuilders.com/join
Facebook: /QuitoLambda
Twitter: @QuitoLambda
Slack: quitodev.slack.com
Referencias
● https://medium.com/@abhayg772/introduction-to-redux-using-react-native-a8f
1e8778333
● https://medium.com/@javascript_7596/react-redux-concept-workflow-cheatsh
eet-be00e3ffa853
● https://reactjs.org/docs/react-without-jsx.html
● https://reactjs.org/docs/context.html
● https://reactjs.org/docs/design-principles.html
● https://bumbu.github.io/simple-redux/
● https://wiki.haskell.org/Smart_constructors

Más contenido relacionado

Similar a Aplicaciones móviles multiplataforma con React Native y Redux

Introducción a AngularJS
Introducción a AngularJSIntroducción a AngularJS
Introducción a AngularJSLuis Natividad
 
Html5 para móviles, las reglas no escritas
Html5 para móviles, las reglas no escritasHtml5 para móviles, las reglas no escritas
Html5 para móviles, las reglas no escritasCarlos Toxtli
 
Webinar - Iniciación a React para desarrollo de interfaces de usuario
Webinar - Iniciación a React para desarrollo de interfaces de usuarioWebinar - Iniciación a React para desarrollo de interfaces de usuario
Webinar - Iniciación a React para desarrollo de interfaces de usuarioArsys
 
Modelamiento uml
Modelamiento umlModelamiento uml
Modelamiento umlalejo_13
 
Modelamiento uml
Modelamiento umlModelamiento uml
Modelamiento umlalejo_13
 
Modelamiento uml
Modelamiento umlModelamiento uml
Modelamiento umlalejo_13
 
Introduccion a NetLogo
Introduccion a NetLogoIntroduccion a NetLogo
Introduccion a NetLogoDiana
 
Principios SOLID de Diseño Orientado a Objetos
Principios SOLID de Diseño Orientado a ObjetosPrincipios SOLID de Diseño Orientado a Objetos
Principios SOLID de Diseño Orientado a ObjetosJose E. Rodriguez Huerta
 
Programacion orientada a_objeto
Programacion orientada a_objetoProgramacion orientada a_objeto
Programacion orientada a_objetocesar
 
Power builder 7.0 diseno de aplicaciones
Power builder 7.0   diseno de aplicacionesPower builder 7.0   diseno de aplicaciones
Power builder 7.0 diseno de aplicacionesDavid
 
Tema 4 3_3_interfaces_de_usuario
Tema 4 3_3_interfaces_de_usuarioTema 4 3_3_interfaces_de_usuario
Tema 4 3_3_interfaces_de_usuarioCarlos A. Iglesias
 
CrossDvlpu - REACT para desarrolladores de ASP.NET
CrossDvlpu - REACT para desarrolladores de ASP.NETCrossDvlpu - REACT para desarrolladores de ASP.NET
CrossDvlpu - REACT para desarrolladores de ASP.NETAlberto Diaz Martin
 
Cross development - React para desarrolladores de asp.net
Cross development - React para desarrolladores de asp.netCross development - React para desarrolladores de asp.net
Cross development - React para desarrolladores de asp.netAlberto Diaz Martin
 

Similar a Aplicaciones móviles multiplataforma con React Native y Redux (20)

Introducción a AngularJS
Introducción a AngularJSIntroducción a AngularJS
Introducción a AngularJS
 
Presentación react con redux SLUD 2017
Presentación react con redux SLUD 2017Presentación react con redux SLUD 2017
Presentación react con redux SLUD 2017
 
Html5 para móviles, las reglas no escritas
Html5 para móviles, las reglas no escritasHtml5 para móviles, las reglas no escritas
Html5 para móviles, las reglas no escritas
 
principios básicos
principios básicosprincipios básicos
principios básicos
 
Webinar - Iniciación a React para desarrollo de interfaces de usuario
Webinar - Iniciación a React para desarrollo de interfaces de usuarioWebinar - Iniciación a React para desarrollo de interfaces de usuario
Webinar - Iniciación a React para desarrollo de interfaces de usuario
 
Modelamiento uml
Modelamiento umlModelamiento uml
Modelamiento uml
 
Modelamiento uml
Modelamiento umlModelamiento uml
Modelamiento uml
 
Modelamiento uml
Modelamiento umlModelamiento uml
Modelamiento uml
 
Ddd + ah + microservicios
Ddd + ah + microserviciosDdd + ah + microservicios
Ddd + ah + microservicios
 
Introduccion a NetLogo
Introduccion a NetLogoIntroduccion a NetLogo
Introduccion a NetLogo
 
Principios SOLID de Diseño Orientado a Objetos
Principios SOLID de Diseño Orientado a ObjetosPrincipios SOLID de Diseño Orientado a Objetos
Principios SOLID de Diseño Orientado a Objetos
 
Casos de uso
Casos de usoCasos de uso
Casos de uso
 
Programacion orientada a_objeto
Programacion orientada a_objetoProgramacion orientada a_objeto
Programacion orientada a_objeto
 
Uml
UmlUml
Uml
 
Power builder 7.0 diseno de aplicaciones
Power builder 7.0   diseno de aplicacionesPower builder 7.0   diseno de aplicaciones
Power builder 7.0 diseno de aplicaciones
 
ATIX21
ATIX21ATIX21
ATIX21
 
202204-Modernizando aplicaciones legacy
202204-Modernizando aplicaciones legacy202204-Modernizando aplicaciones legacy
202204-Modernizando aplicaciones legacy
 
Tema 4 3_3_interfaces_de_usuario
Tema 4 3_3_interfaces_de_usuarioTema 4 3_3_interfaces_de_usuario
Tema 4 3_3_interfaces_de_usuario
 
CrossDvlpu - REACT para desarrolladores de ASP.NET
CrossDvlpu - REACT para desarrolladores de ASP.NETCrossDvlpu - REACT para desarrolladores de ASP.NET
CrossDvlpu - REACT para desarrolladores de ASP.NET
 
Cross development - React para desarrolladores de asp.net
Cross development - React para desarrolladores de asp.netCross development - React para desarrolladores de asp.net
Cross development - React para desarrolladores de asp.net
 

Más de Quito Lambda

Python con un toque funcional
Python con un toque funcionalPython con un toque funcional
Python con un toque funcionalQuito Lambda
 
Serverless: La evolucion de la arquitectura a la nube
Serverless: La evolucion de la arquitectura a la nubeServerless: La evolucion de la arquitectura a la nube
Serverless: La evolucion de la arquitectura a la nubeQuito Lambda
 
Vue.js: Adaptando un enfoque funcional
Vue.js: Adaptando un enfoque funcionalVue.js: Adaptando un enfoque funcional
Vue.js: Adaptando un enfoque funcionalQuito Lambda
 
ReasonML is awesome
ReasonML is awesomeReasonML is awesome
ReasonML is awesomeQuito Lambda
 
Ansible + AWS: Cómo administrar tu infraestructura de AWS con Ansible
Ansible + AWS: Cómo administrar tu infraestructura de AWS con AnsibleAnsible + AWS: Cómo administrar tu infraestructura de AWS con Ansible
Ansible + AWS: Cómo administrar tu infraestructura de AWS con AnsibleQuito Lambda
 
El otro TDD: Type Driven Development
El otro TDD: Type Driven DevelopmentEl otro TDD: Type Driven Development
El otro TDD: Type Driven DevelopmentQuito Lambda
 

Más de Quito Lambda (6)

Python con un toque funcional
Python con un toque funcionalPython con un toque funcional
Python con un toque funcional
 
Serverless: La evolucion de la arquitectura a la nube
Serverless: La evolucion de la arquitectura a la nubeServerless: La evolucion de la arquitectura a la nube
Serverless: La evolucion de la arquitectura a la nube
 
Vue.js: Adaptando un enfoque funcional
Vue.js: Adaptando un enfoque funcionalVue.js: Adaptando un enfoque funcional
Vue.js: Adaptando un enfoque funcional
 
ReasonML is awesome
ReasonML is awesomeReasonML is awesome
ReasonML is awesome
 
Ansible + AWS: Cómo administrar tu infraestructura de AWS con Ansible
Ansible + AWS: Cómo administrar tu infraestructura de AWS con AnsibleAnsible + AWS: Cómo administrar tu infraestructura de AWS con Ansible
Ansible + AWS: Cómo administrar tu infraestructura de AWS con Ansible
 
El otro TDD: Type Driven Development
El otro TDD: Type Driven DevelopmentEl otro TDD: Type Driven Development
El otro TDD: Type Driven Development
 

Aplicaciones móviles multiplataforma con React Native y Redux