SlideShare una empresa de Scribd logo
1 de 33
MAD · NOV 23-24 · 2018
Reactjs
El ciclo de la vida
Javier Fernández
Software developer
Nacho Fanjul
Software architect & Key Specialist
MAD · NOV 23-24 · 2018
MAD · NOV 23-24 · 2018
MAD · NOV 23-24 · 2018
Agenda
MAD · NOV 23-24 · 2018
Nuestra premisa para desarrollar en reactjs
Principios
de desarrollo de componentes
Reutilización
+ Pequeño
El estado no se toca
Mi padre “the Boss”
Inmutable/mutable+ Tonto
MAD · NOV 23-24 · 2018
Jerarquía de componentes
Flujo de datos Eventos
MAD · NOV 23-24 · 2018
Funcionamiento de esa jerarquía
Cambio de estado
render() {
return (
<MyComponent />
);
}
MAD · NOV 23-24 · 2018
Funcionamiento del componente
props
const MyComponent = (props)=> {
return (
<MyChildComponet />
);
}
DOM
MAD · NOV 23-24 · 2018
¿Qué son los ciclos de vida?
MAD · NOV 23-24 · 2018
Ciclos de vida - Grupos
Mounting Updating Unmounting
MAD · NOV 23-24 · 2018
Ciclos de vida - Fases
Render Pre-commit Commit
MAD · NOV 23-24 · 2018
Mounting Updating Unmounting
constructor
MAD · NOV 23-24 · 2018
constructor(props)
MAD · NOV 23-24 · 2018
Mounting Updating Unmounting
constructor
getDeriveredStateFromProps
MAD · NOV 23-24 · 2018
getDerivedStateFromProps (nextProps, prevState)
MAD · NOV 23-24 · 2018
Mounting Updating Unmounting
constructor
getDerivedStateFromProps
render
MAD · NOV 23-24 · 2018
render()
MAD · NOV 23-24 · 2018
Mounting Updating Unmounting
constructor
getDeriveredStateFromProps
render
DOMVIRTUALDOM
componentDidMount
MAD · NOV 23-24 · 2018
componentDidMount()
MAD · NOV 23-24 · 2018
Mounting Updating Unmounting
constructor
getDeriveredStateFromProps
shouldComponent
Update
componentDidMount
New props setState() forceUpdate()
DOM
render
VIRTUALDOM
MAD · NOV 23-24 · 2018
shouldComponentUpdate(nextProps, nextState)
MAD · NOV 23-24 · 2018
Mounting Updating Unmounting
constructor
getDeriveredStateFromProps
shouldComponent
Update
render
getSnapshotBeforeUpdate
componentDidMount
New props setState() forceUpdate()
DOMVIRTUALDOM
MAD · NOV 23-24 · 2018
getSnapshotBeforeUpdate(prevProps, prevState)
MAD · NOV 23-24 · 2018
Mounting Updating Unmounting
constructor
getDeriveredStateFromProps
shouldComponent
Update
render
getSnapshotBeforeUpdate
componentDidUpdatecomponentDidMount
New props setState() forceUpdate()
DOMVIRTUALDOM
MAD · NOV 23-24 · 2018
componentDidUpdate(prevProps, prevState, snapshot)
MAD · NOV 23-24 · 2018
Mounting Updating Unmounting
constructor
getDeriveredStateFromProps
shouldComponent
Update
render
getSnapshotBeforeUpdate
componentDidUpdatecomponentDidMount componentWillUnmount
New props setState() forceUpdate()
DOMVIRTUALDOM
MAD · NOV 23-24 · 2018
componentWillUnmount()
MAD · NOV 23-24 · 2018
UnmountingMounting Updating
Algunas cosas más…
UNSAFE_
componentWillReceiveProps
componentDidCatch
UNSAFE_
componentWillUpdate
UNSAFE_componentWillMo
unt
getDerivedStateFromError
MAD · NOV 23-24 · 2018
MAD · NOV 23-24 · 2018
“Las cucarachas nacen, crecen,
se reproducen y mueren…“
by dpto. Marketing de Cruz Verde
MAD · NOV 23-24 · 2018
Un buen uso de los ciclos de vida, mejora el rendimiento y
la experiencia de usuario.
MAD · NOV 23-24 · 2018
Un mal uso de los ciclos de vida, provoca pérdidas de memoria
y mala experiencia de usuario.
MAD · NOV 23-24 · 2018
Javier Fernandez
Software developer
jfernadez@pasiona.com - @javiiscript
Nacho Fanjul
Software architect & Key Specialist
nfanjul@pasiona.com - @nfanjul
https://github.com/nfanjul/lifecyclesreact
MAD · NOV 23-24 · 2018

Más contenido relacionado

Similar a Reactjs, el ciclo de la vida

Carrera de fondo - La continuada lucha de AngularJS - CodeMotion 2015
Carrera de fondo - La continuada lucha de AngularJS - CodeMotion 2015Carrera de fondo - La continuada lucha de AngularJS - CodeMotion 2015
Carrera de fondo - La continuada lucha de AngularJS - CodeMotion 2015José Manuel García García
 
La retro de Portfolio
La retro de PortfolioLa retro de Portfolio
La retro de PortfolioGerardo Ponte
 
Creando un Theme con WP Rest API
Creando un Theme con WP Rest APICreando un Theme con WP Rest API
Creando un Theme con WP Rest APIBryan Rojas
 
Planes de ejecución 3.0 sql 2016 y v next
Planes de ejecución 3.0 sql 2016 y v nextPlanes de ejecución 3.0 sql 2016 y v next
Planes de ejecución 3.0 sql 2016 y v nextEnrique Catala Bañuls
 
WordCamp Managua 2019 - Theming with WP Rest API
WordCamp Managua 2019 - Theming with WP Rest APIWordCamp Managua 2019 - Theming with WP Rest API
WordCamp Managua 2019 - Theming with WP Rest APIBryan Rojas
 

Similar a Reactjs, el ciclo de la vida (9)

Carrera de fondo - La continuada lucha de AngularJS - CodeMotion 2015
Carrera de fondo - La continuada lucha de AngularJS - CodeMotion 2015Carrera de fondo - La continuada lucha de AngularJS - CodeMotion 2015
Carrera de fondo - La continuada lucha de AngularJS - CodeMotion 2015
 
La retro de Portfolio
La retro de PortfolioLa retro de Portfolio
La retro de Portfolio
 
Creando un Theme con WP Rest API
Creando un Theme con WP Rest APICreando un Theme con WP Rest API
Creando un Theme con WP Rest API
 
Planes de ejecución 3.0 sql 2016 y v next
Planes de ejecución 3.0 sql 2016 y v nextPlanes de ejecución 3.0 sql 2016 y v next
Planes de ejecución 3.0 sql 2016 y v next
 
Del infierno al cielo
Del infierno al cieloDel infierno al cielo
Del infierno al cielo
 
10 cosas de rails que deberías saber
10 cosas de rails que deberías saber10 cosas de rails que deberías saber
10 cosas de rails que deberías saber
 
WordCamp Managua 2019 - Theming with WP Rest API
WordCamp Managua 2019 - Theming with WP Rest APIWordCamp Managua 2019 - Theming with WP Rest API
WordCamp Managua 2019 - Theming with WP Rest API
 
Swing (1)
Swing (1)Swing (1)
Swing (1)
 
Swing
SwingSwing
Swing
 

Más de Nacho Fanjul Corteguera

Buscando en el “Key Vault”de los recuerdos
Buscando en el “Key Vault”de los recuerdosBuscando en el “Key Vault”de los recuerdos
Buscando en el “Key Vault”de los recuerdosNacho Fanjul Corteguera
 
Los test de integración tambien merecen tener vida: AzureDevOps para dar ALMa...
Los test de integración tambien merecen tener vida:AzureDevOps para dar ALMa...Los test de integración tambien merecen tener vida:AzureDevOps para dar ALMa...
Los test de integración tambien merecen tener vida: AzureDevOps para dar ALMa...Nacho Fanjul Corteguera
 
Creando aplicaciones multi-tenant [Opensouthcode 2019]
Creando aplicaciones multi-tenant [Opensouthcode 2019]Creando aplicaciones multi-tenant [Opensouthcode 2019]
Creando aplicaciones multi-tenant [Opensouthcode 2019]Nacho Fanjul Corteguera
 
Azure messaging! La comparación definitiva
Azure messaging! La comparación definitivaAzure messaging! La comparación definitiva
Azure messaging! La comparación definitivaNacho Fanjul Corteguera
 
Event Grid, ¿colega que pasa en mi nube? 2.0
Event Grid, ¿colega que pasa en mi nube? 2.0Event Grid, ¿colega que pasa en mi nube? 2.0
Event Grid, ¿colega que pasa en mi nube? 2.0Nacho Fanjul Corteguera
 
Event Grid, ¿colega que pasa en mi nube?
Event Grid, ¿colega que pasa en mi nube? Event Grid, ¿colega que pasa en mi nube?
Event Grid, ¿colega que pasa en mi nube? Nacho Fanjul Corteguera
 
¿Cómo mezclar agua con aceite? NodeJS + Azure
¿Cómo mezclar agua con aceite? NodeJS + Azure ¿Cómo mezclar agua con aceite? NodeJS + Azure
¿Cómo mezclar agua con aceite? NodeJS + Azure Nacho Fanjul Corteguera
 
¿Cómo mezclar agua con aceite? NodeJS + Azure
¿Cómo mezclar agua con aceite? NodeJS + Azure¿Cómo mezclar agua con aceite? NodeJS + Azure
¿Cómo mezclar agua con aceite? NodeJS + AzureNacho Fanjul Corteguera
 
Web app, el arte del botón derecho -> Publicar
Web app, el arte del botón derecho -> PublicarWeb app, el arte del botón derecho -> Publicar
Web app, el arte del botón derecho -> PublicarNacho Fanjul Corteguera
 

Más de Nacho Fanjul Corteguera (20)

Testing efectivo en ASP Net Core
Testing efectivo en ASP Net CoreTesting efectivo en ASP Net Core
Testing efectivo en ASP Net Core
 
Mensajes o eventos!
Mensajes o eventos!Mensajes o eventos!
Mensajes o eventos!
 
Testing efectivo en ASP Net Core
Testing efectivo en ASP Net CoreTesting efectivo en ASP Net Core
Testing efectivo en ASP Net Core
 
Buscando en el “Key Vault”de los recuerdos
Buscando en el “Key Vault”de los recuerdosBuscando en el “Key Vault”de los recuerdos
Buscando en el “Key Vault”de los recuerdos
 
Event Grid, el efecto mariposa
Event Grid, el efecto mariposaEvent Grid, el efecto mariposa
Event Grid, el efecto mariposa
 
Los test de integración tambien merecen tener vida: AzureDevOps para dar ALMa...
Los test de integración tambien merecen tener vida:AzureDevOps para dar ALMa...Los test de integración tambien merecen tener vida:AzureDevOps para dar ALMa...
Los test de integración tambien merecen tener vida: AzureDevOps para dar ALMa...
 
Creando aplicaciones multi-tenant [Opensouthcode 2019]
Creando aplicaciones multi-tenant [Opensouthcode 2019]Creando aplicaciones multi-tenant [Opensouthcode 2019]
Creando aplicaciones multi-tenant [Opensouthcode 2019]
 
Azure messaging! La comparación definitiva
Azure messaging! La comparación definitivaAzure messaging! La comparación definitiva
Azure messaging! La comparación definitiva
 
Event Grid, ¿colega que pasa en mi nube? 2.0
Event Grid, ¿colega que pasa en mi nube? 2.0Event Grid, ¿colega que pasa en mi nube? 2.0
Event Grid, ¿colega que pasa en mi nube? 2.0
 
Creando aplicaciones multi-tenant
Creando aplicaciones multi-tenantCreando aplicaciones multi-tenant
Creando aplicaciones multi-tenant
 
Keynote .Net conf Barcelona 2018
Keynote .Net conf Barcelona 2018Keynote .Net conf Barcelona 2018
Keynote .Net conf Barcelona 2018
 
Azure Logic Apps
Azure Logic AppsAzure Logic Apps
Azure Logic Apps
 
Event Grid, ¿colega que pasa en mi nube?
Event Grid, ¿colega que pasa en mi nube? Event Grid, ¿colega que pasa en mi nube?
Event Grid, ¿colega que pasa en mi nube?
 
Event Grid, colega que pasa en mi nube?
Event Grid, colega que pasa en mi nube?Event Grid, colega que pasa en mi nube?
Event Grid, colega que pasa en mi nube?
 
¿Cómo mezclar agua con aceite? NodeJS + Azure
¿Cómo mezclar agua con aceite? NodeJS + Azure ¿Cómo mezclar agua con aceite? NodeJS + Azure
¿Cómo mezclar agua con aceite? NodeJS + Azure
 
¿Cómo mezclar agua con aceite? NodeJS + Azure
¿Cómo mezclar agua con aceite? NodeJS + Azure¿Cómo mezclar agua con aceite? NodeJS + Azure
¿Cómo mezclar agua con aceite? NodeJS + Azure
 
Gapand KeyNote
Gapand KeyNoteGapand KeyNote
Gapand KeyNote
 
Web app, el arte del botón derecho -> Publicar
Web app, el arte del botón derecho -> PublicarWeb app, el arte del botón derecho -> Publicar
Web app, el arte del botón derecho -> Publicar
 
The big ball of mud!
The big ball of mud!The big ball of mud!
The big ball of mud!
 
PowerBI (Azure Deep Dive)
PowerBI (Azure Deep Dive)PowerBI (Azure Deep Dive)
PowerBI (Azure Deep Dive)
 

Reactjs, el ciclo de la vida

  • 1. MAD · NOV 23-24 · 2018 Reactjs El ciclo de la vida Javier Fernández Software developer Nacho Fanjul Software architect & Key Specialist MAD · NOV 23-24 · 2018
  • 2. MAD · NOV 23-24 · 2018
  • 3. MAD · NOV 23-24 · 2018 Agenda
  • 4. MAD · NOV 23-24 · 2018 Nuestra premisa para desarrollar en reactjs Principios de desarrollo de componentes Reutilización + Pequeño El estado no se toca Mi padre “the Boss” Inmutable/mutable+ Tonto
  • 5. MAD · NOV 23-24 · 2018 Jerarquía de componentes Flujo de datos Eventos
  • 6. MAD · NOV 23-24 · 2018 Funcionamiento de esa jerarquía Cambio de estado render() { return ( <MyComponent /> ); }
  • 7. MAD · NOV 23-24 · 2018 Funcionamiento del componente props const MyComponent = (props)=> { return ( <MyChildComponet /> ); } DOM
  • 8. MAD · NOV 23-24 · 2018 ¿Qué son los ciclos de vida?
  • 9. MAD · NOV 23-24 · 2018 Ciclos de vida - Grupos Mounting Updating Unmounting
  • 10. MAD · NOV 23-24 · 2018 Ciclos de vida - Fases Render Pre-commit Commit
  • 11. MAD · NOV 23-24 · 2018 Mounting Updating Unmounting constructor
  • 12. MAD · NOV 23-24 · 2018 constructor(props)
  • 13. MAD · NOV 23-24 · 2018 Mounting Updating Unmounting constructor getDeriveredStateFromProps
  • 14. MAD · NOV 23-24 · 2018 getDerivedStateFromProps (nextProps, prevState)
  • 15. MAD · NOV 23-24 · 2018 Mounting Updating Unmounting constructor getDerivedStateFromProps render
  • 16. MAD · NOV 23-24 · 2018 render()
  • 17. MAD · NOV 23-24 · 2018 Mounting Updating Unmounting constructor getDeriveredStateFromProps render DOMVIRTUALDOM componentDidMount
  • 18. MAD · NOV 23-24 · 2018 componentDidMount()
  • 19. MAD · NOV 23-24 · 2018 Mounting Updating Unmounting constructor getDeriveredStateFromProps shouldComponent Update componentDidMount New props setState() forceUpdate() DOM render VIRTUALDOM
  • 20. MAD · NOV 23-24 · 2018 shouldComponentUpdate(nextProps, nextState)
  • 21. MAD · NOV 23-24 · 2018 Mounting Updating Unmounting constructor getDeriveredStateFromProps shouldComponent Update render getSnapshotBeforeUpdate componentDidMount New props setState() forceUpdate() DOMVIRTUALDOM
  • 22. MAD · NOV 23-24 · 2018 getSnapshotBeforeUpdate(prevProps, prevState)
  • 23. MAD · NOV 23-24 · 2018 Mounting Updating Unmounting constructor getDeriveredStateFromProps shouldComponent Update render getSnapshotBeforeUpdate componentDidUpdatecomponentDidMount New props setState() forceUpdate() DOMVIRTUALDOM
  • 24. MAD · NOV 23-24 · 2018 componentDidUpdate(prevProps, prevState, snapshot)
  • 25. MAD · NOV 23-24 · 2018 Mounting Updating Unmounting constructor getDeriveredStateFromProps shouldComponent Update render getSnapshotBeforeUpdate componentDidUpdatecomponentDidMount componentWillUnmount New props setState() forceUpdate() DOMVIRTUALDOM
  • 26. MAD · NOV 23-24 · 2018 componentWillUnmount()
  • 27. MAD · NOV 23-24 · 2018 UnmountingMounting Updating Algunas cosas más… UNSAFE_ componentWillReceiveProps componentDidCatch UNSAFE_ componentWillUpdate UNSAFE_componentWillMo unt getDerivedStateFromError
  • 28. MAD · NOV 23-24 · 2018
  • 29. MAD · NOV 23-24 · 2018 “Las cucarachas nacen, crecen, se reproducen y mueren…“ by dpto. Marketing de Cruz Verde
  • 30. MAD · NOV 23-24 · 2018 Un buen uso de los ciclos de vida, mejora el rendimiento y la experiencia de usuario.
  • 31. MAD · NOV 23-24 · 2018 Un mal uso de los ciclos de vida, provoca pérdidas de memoria y mala experiencia de usuario.
  • 32. MAD · NOV 23-24 · 2018 Javier Fernandez Software developer jfernadez@pasiona.com - @javiiscript Nacho Fanjul Software architect & Key Specialist nfanjul@pasiona.com - @nfanjul https://github.com/nfanjul/lifecyclesreact
  • 33. MAD · NOV 23-24 · 2018