SlideShare a Scribd company logo
1 of 37
una consultora tecnológica
que piensa en colores
para organizaciones vivas
una consultora tecnológica
que piensa en colores
para organizaciones vivas
React para desarrolladores de ASP.NET
Alberto Diaz Martin
alberto.diaz@encamina.com - @adiazcan
Alberto Diaz cuenta con más de 15 años de experiencia en la Industria IT, todos ellos trabajando
con tecnologías Microsoft. Actualmente, es Chief Technology Innovation Officer en ENCAMINA,
liderando el desarrollo de software con tecnología Microsoft, y miembro del equipo de
Dirección.
Para la comunidad, trabaja como organizador y speaker de las conferencias más relevantes del
mundo Microsoft en España, en las cuales es uno de los referentes en SharePoint, Office 365 y
Azure. Autor de diversos libros y artículos en revistas profesionales y blogs, en 2013 empezó a
formar parte del equipo de Dirección de CompartiMOSS, una revista digital sobre tecnologías
Microsoft.
Desde 2011 ha sido nombrado Microsoft MVP, reconocimiento que ha renovado por séptimo
año consecutivo. Se define como un geek, amante de los smartphones y desarrollador.
Fundador de TenerifeDev (www.tenerifedev.com), un grupo de usuarios de .NET en Tenerife, y
coordinador de SUGES (Grupo de Usuarios de SharePoint de España, www.suges.es)
2002
ASP.NET 1.0
2006
JQUERY
2007
ASP.NET 3.5
2009
ASP.NET MVC 1.0
2010
Knockout JS
2012
ASP.NET WEB API 1.0
¿Qué Framework JS elegir?
4
¿Qué Framework JS elegir?
5
Expectativas de los usuarios
Rápido
Rich Clients
Reactivo
SEO
Rápido
MVC
Backbone
Angular
Knockout
View
ReactJS
Handlebars.js
• Una librería JavaScript para construer interfaces de usuario (UI)
• Open Source, declarativa, basada en components
• No es un framework MVC
• Isomorphic App, can render on client and server
• Unidirectional Flows. No two-way binding
¿Qué es React?
Con React creamos arboles de componentes, estos componentes pueden tener estado y propiedades.
React Component
8
Componente
Componente Componente
Componente Componente
App
Header
Menu
Item Item
Hello
World
Footer
Item Item
React Virtual DOM
• React implementa un DOM Virtual – ReactDOM
• ReactDOM es el encargado de renderizar los componentes
React en el DOM del navegador
• Virtual por:
– Para cada objeto en el DOM, existe un objeto en el
Virtual
– Los cambios en los objetos virtuales, no fuerzan
cambios en el navegador, se cambian cuando son
renderizados
– Es más eficiente el uso del Virtual DOM
– Cuando se actualiza un componente en el Virtual
DOM, React ejecuta un algoritmo de comparación
para detectar los cambios y renderizarlos
9
Nuestro HTML pero en JavaScript / Typescript
JSX / TSX
public render() {
return (
<tr key={this.props.member.id}>
<td>
<span>{this.props.member.id}</span>
</td>
<td>
<span>{this.props.member.login}</span>
</td>
</tr>
);
}
return (
React.createElement
("tr", {"key": this.props.member.id},
React.createElement("td", null,
React.createElement("span", null, this.props.member.id))
, React.createElement("td", null,
React.createElement("span", null, this.props.member.login))
);
React Props
• Son inmutables
• Similares a atributos HTML
• Se definen cuando el componente es creado
• Ejemplo: un listado de clientes, los datos de un cliente, …
11
React State
• Mutables
• Mantiene el estado del componente
• Datos privados del componente
• Responde a cambios en la interfaz
12
Demo
react as is
13
Ciclo de vida de una aplicación web
Browser MVC
Get page
Query
API
Get data
Render
React
components
HTML & JS
WEB
API
Interaction
With React Components
Get data
Get data
JSON
Ciclo de vida de ASP.NET
15
Ciclo de vida de un
Componente
Tiene un ciclo de vida definido por los siguientes tipos de
sucesos:
– Eventos de montaje (mounting): métodos invocados
cuando una instancia del componente está siendo
creado e insertado (o eliminada) del DOM real.
– Eventos de actualización (updating): métodos que se
invocan cuando hay cambios en las propiedades o el
estado de un componente. Una actualización dispara
una re-renderización.
– Eventos de manejo de errores: un componente
puede capturar todos los errores producidos en su
ejecución, o la ejecución de sus subcomponentes.
16
Eventos de montaje
• constructor(props):
– se llama antes del montaje
– se debe llamar a super(props) para una inicialización
adecuada
• componentWillMount():
– se invoca justo antes de que ocurra el montaje, antes
de render
• componentDidMount():
– se invoca justo después del montaje
– se usa para la inicialización que depende de nodos
del DOM, cargar datos desde red, etc.
• componentWillUnmount():
– se invoca justo antes de remover el componente del
DOM, y que éste sea destruido
– se usa para realizar “limpieza”: cancelar operaciones
pendientes, eliminar referencias, etc.
Eventos de actualización
• componentWillReceiveProps(nextProps):
– se invoca justo antes que un componente montado
reciba nuevas props
– es útil para comparar lo pasado con lo futuro, por
ejemplo actualizando el estado
– no se invoca en el primer montaje
• shouldComponentUpdate(nextProps, nextState):
– se invoca antes de re-renderizar un componente cuyas
props y state han cambiado
– la idea es determinar si realmente es necesario re-
renderizar el componente
– debe retornar true o false, no se invoca en el primer
renderizado
• componentWillUpdate(nextProps, nextState):
– se invoca justo antes de re-renderizar
• componentDidUpdate():
– se invoca justo después de la actualización
– no se invoca en el primer renderizado
– sirve para operar en el DOM con el nuevo estado/props
actualizados
Eventos de manejo de errores
● componentDidCatch(error, info):
– un componente se transforma en una
frontera de errores al definir este método
– se invoca cuando se captura un error en el
componente o cualquiera de sus hijos, y
que no haya sido capturado antes
– permite manejar los errores, por ejemplo,
mostrando una UI distinta o mensajes de
error
Initialization
getDefaultProps
getInitialState
componentWillMount
componentDidMount
State changes
shouldComponentUpdate
componentWillUpdate
componentDidUpdate
Props changes
componentWillReceivePro
ps
Unmounting
componentWillUnmount
render
First time
After first time
Ciclo de vida de un componente
Eventos
● Los componentes React/HTML aceptan los
“mismos” eventos que el HTML de verdad…
● Se escriben en camelCase: onClick, onChange,
etc…
● Como valor del handler, debe ir una función, y no
un string!
● Típicamente el handler es un método de la
clase/componente, que debe ser asociado con
bind
IIS Express
Project Templates
React Toolchain
ASP.NET
React
IIS Express
Project Templates
Node.js Package Manager
npm
23
Webpack
Esta herramienta se centra en simplificar la paquetizaciónde una web y nos permite
trabajar con módulos ES6, pudiendo generar código compatible ES5.
Typescript
Typescript es un lenguaje open source, cuyo resultado de transpilación puede ser ES5 o ES6 (es
decir javascript), ideado por Microsoft, adoptado por empresas como Google.
Es 100% compatible con typescript, solo tenemos que hacer la prueba y renombrar un .js a .ts y
sigue funcionando.
¿ Qué nos da? Dos características principales: tipos + intellisense y errores en tiempo de
transpilación… dejándonos también puerta abierta a lo dinámico (e.g. any). PRODUCTIVIDAD
El objetivo de typescript es que en unos años desaparezca, si una versión más moderna de ES
incorporar dicho nivel de productividad
¿Por qué Typescript?
26
Visual Studio
27
28
https://github.com/aspnet/JavaScriptServices
• A set of client-side technologies for ASP.NET Core
– Use Angular / React / Vue / Aurelia / Knockout / etc.
– Build your client-side resources using Webpack.
– Execute JavaScript on the server at runtime.
• A set of NuGet/NPM packages that implement functionality
for:
– Invoking arbitrary NPM packages at runtime from .NET
code
– Server-side prerendering of SPA components
– Webpack dev middleware
– Hot module replacement (HMR)
– Server-side and client-side routing integration
– Server-side and client-side validation integration
– "Lazy loading" for Knockout apps
ASP.NET CORE JavaScript Services
.NET
ASP.NET Core JavaScript
Services for React
Webpack Dev Middleware and Hot Module Replacement
• You don't have to run webpack manually or set up any file
watchers
• The browser is always guaranteed to receive up-to-date
built output
• The built artifacts are normally served instantly or at least
extremely quickly, because internally, an instance of
webpack stays active and has partial compilation states
pre-cached in memory
SPA fallback route
Server-side pre-rendering
<div id="react-app" asp-prerender-
module="ClientApp/dist/main-server">Loading...</div>
Demo
react con Visual Studio
30
Intro Redux
Intro Redux
Redux es un contenedor de estado para aplicaciones javascript.
Nos permite crear aplicaciones que tengan un comportamiento consistente.
Se puede ejecutar en diferentes entornos (cliente, servidor, nativo), y desde
diferentes librerías (angularjs, react…)
Es fácil de añadirle pruebas unitarias
Sólo pesa 2Kb
Esquema Redux
Container
Component
Reducers
Validations
StateStateState
Props - Action
State (readonly)
Updates + render
Actions
Update
State
Presentation
Component
Props
Dispatch
Action
State
Tenemos que pensar del Estado que le llega a un component de React como si de
un fotograma de un videojuego se tratase.
El fotograma actual no se puede modificar, puedo enviar mensajes para configurar
el siguiente.
es decir el estado actual que llega al componente es de solo lectura / inmutable /
desconectado, a la siguiente modificación le llegara un nuevo estado.
¿ Cómo hacemos esto eficiente… muy eficiente ? Direcciones de memoria.
State
{fondo: gris, estado: encogido} {fondo: gris, estado: estirando} {fondo: gris, estado: estirado}
Reducer calcula
siguiente estado
Se lanza render del
componente
Reducer calcula
siguiente estado
Se lanza render del
componente
Si hacemos una
modificación
directamente en el
fotograma se pierde
Alberto Diaz Martin
alberto.diaz@encamina.com - @adiazcan
Para estar al loro de nuestros próximos eventos…¡síguenos!
ENCAMINA @ENCAMINA+Encamina Piensa en Colores ENCAMINA
MyENCAMINA
ENCAMINA.TV encamina_piensa_en_colores
Encamina Piensa en Colores

More Related Content

What's hot

Equipo de Marketing de Paradigma Digital
Equipo de Marketing de Paradigma DigitalEquipo de Marketing de Paradigma Digital
Equipo de Marketing de Paradigma DigitalParadigma Digital
 
Manual de jquery en pdf desarrollowebcom
Manual de jquery en pdf desarrollowebcomManual de jquery en pdf desarrollowebcom
Manual de jquery en pdf desarrollowebcomjo_ram
 
Introducción al desarrollo Web: Frontend con Angular 6
Introducción al desarrollo Web: Frontend con Angular 6Introducción al desarrollo Web: Frontend con Angular 6
Introducción al desarrollo Web: Frontend con Angular 6Gabriela Bosetti
 
Conociendo ReactJs . Scio Talks
Conociendo ReactJs . Scio TalksConociendo ReactJs . Scio Talks
Conociendo ReactJs . Scio TalksScio Consulting
 
Asp.Net Core 1.0 Deep Dive
Asp.Net Core 1.0 Deep DiveAsp.Net Core 1.0 Deep Dive
Asp.Net Core 1.0 Deep DiveEduard Tomàs
 
Todo lo que un desarrollador no puede desconocer de javascript tutorial j q...
Todo lo que un desarrollador no puede desconocer de javascript   tutorial j q...Todo lo que un desarrollador no puede desconocer de javascript   tutorial j q...
Todo lo que un desarrollador no puede desconocer de javascript tutorial j q...Marcelino Ortiz
 
9/9 Curso JEE5, Soa, Web Services, ESB y XML
9/9 Curso JEE5, Soa, Web Services, ESB y XML9/9 Curso JEE5, Soa, Web Services, ESB y XML
9/9 Curso JEE5, Soa, Web Services, ESB y XMLJuan Carlos Rubio Pineda
 

What's hot (20)

Taller Grails
Taller GrailsTaller Grails
Taller Grails
 
GWT
GWTGWT
GWT
 
Equipo de Marketing de Paradigma Digital
Equipo de Marketing de Paradigma DigitalEquipo de Marketing de Paradigma Digital
Equipo de Marketing de Paradigma Digital
 
Manual de jquery en pdf desarrollowebcom
Manual de jquery en pdf desarrollowebcomManual de jquery en pdf desarrollowebcom
Manual de jquery en pdf desarrollowebcom
 
Gwt III - Avanzado
Gwt III - AvanzadoGwt III - Avanzado
Gwt III - Avanzado
 
Introducción al desarrollo Web: Frontend con Angular 6
Introducción al desarrollo Web: Frontend con Angular 6Introducción al desarrollo Web: Frontend con Angular 6
Introducción al desarrollo Web: Frontend con Angular 6
 
Creación de plugins con Grails
Creación de plugins con GrailsCreación de plugins con Grails
Creación de plugins con Grails
 
React redux workshop
React redux workshopReact redux workshop
React redux workshop
 
Javascript + Angular Sesion 2
Javascript + Angular Sesion 2Javascript + Angular Sesion 2
Javascript + Angular Sesion 2
 
Conociendo ReactJs . Scio Talks
Conociendo ReactJs . Scio TalksConociendo ReactJs . Scio Talks
Conociendo ReactJs . Scio Talks
 
Curso ajax
Curso ajaxCurso ajax
Curso ajax
 
Trabajando con imagenes en liferay 6.1
Trabajando con imagenes en liferay 6.1Trabajando con imagenes en liferay 6.1
Trabajando con imagenes en liferay 6.1
 
Gwt II - trabajando con gwt
Gwt II - trabajando con gwtGwt II - trabajando con gwt
Gwt II - trabajando con gwt
 
Introduccion silverlight
Introduccion silverlightIntroduccion silverlight
Introduccion silverlight
 
Asp.Net Core 1.0 Deep Dive
Asp.Net Core 1.0 Deep DiveAsp.Net Core 1.0 Deep Dive
Asp.Net Core 1.0 Deep Dive
 
Springboot Overview
Springboot  OverviewSpringboot  Overview
Springboot Overview
 
Todo lo que un desarrollador no puede desconocer de javascript tutorial j q...
Todo lo que un desarrollador no puede desconocer de javascript   tutorial j q...Todo lo que un desarrollador no puede desconocer de javascript   tutorial j q...
Todo lo que un desarrollador no puede desconocer de javascript tutorial j q...
 
Perfiles en maven
Perfiles en mavenPerfiles en maven
Perfiles en maven
 
Servicios web
Servicios webServicios web
Servicios web
 
9/9 Curso JEE5, Soa, Web Services, ESB y XML
9/9 Curso JEE5, Soa, Web Services, ESB y XML9/9 Curso JEE5, Soa, Web Services, ESB y XML
9/9 Curso JEE5, Soa, Web Services, ESB y XML
 

Similar to React para ASP.NET

Efc programación .net-luis fernando aguas - 22012022 1700
Efc programación .net-luis fernando aguas - 22012022 1700Efc programación .net-luis fernando aguas - 22012022 1700
Efc programación .net-luis fernando aguas - 22012022 1700Luis Fernando Aguas Bucheli
 
EFC-Programación .net-Luis Fernando Aguas - 15012022 1500.pptx
EFC-Programación .net-Luis Fernando Aguas - 15012022 1500.pptxEFC-Programación .net-Luis Fernando Aguas - 15012022 1500.pptx
EFC-Programación .net-Luis Fernando Aguas - 15012022 1500.pptxLuis Fernando Aguas Bucheli
 
Jsf Java Server Faces
Jsf   Java Server FacesJsf   Java Server Faces
Jsf Java Server Facescok12v
 
VLCTechFest - Simplificando Controladores: Una introducción a Action-Domain ...
VLCTechFest -  Simplificando Controladores: Una introducción a Action-Domain ...VLCTechFest -  Simplificando Controladores: Una introducción a Action-Domain ...
VLCTechFest - Simplificando Controladores: Una introducción a Action-Domain ...Miguel Ángel Sánchez Chordi
 
Primeros pasos Symfony PHPVigo
Primeros pasos Symfony PHPVigoPrimeros pasos Symfony PHPVigo
Primeros pasos Symfony PHPVigoPHP Vigo
 
Reactvolution
ReactvolutionReactvolution
Reactvolution_Lagash
 
5.- PPT 2022 05 U01 T01 Desarrollo de Servicios Web I (1915).pptx
5.- PPT 2022 05 U01 T01 Desarrollo de Servicios Web I (1915).pptx5.- PPT 2022 05 U01 T01 Desarrollo de Servicios Web I (1915).pptx
5.- PPT 2022 05 U01 T01 Desarrollo de Servicios Web I (1915).pptxSibilinoAndante
 
Introducción a react + redux
Introducción a react + reduxIntroducción a react + redux
Introducción a react + reduxMiguel Mendoza
 
Patrones de diseño I
Patrones de diseño IPatrones de diseño I
Patrones de diseño Ijjegonzalezf
 
Presentacion Ruby on Rails en Universidad Autónoma 2009
Presentacion Ruby on Rails en Universidad Autónoma 2009Presentacion Ruby on Rails en Universidad Autónoma 2009
Presentacion Ruby on Rails en Universidad Autónoma 2009Nelson Rojas Núñez
 
Introducción a SharePoint Framework
Introducción a SharePoint FrameworkIntroducción a SharePoint Framework
Introducción a SharePoint FrameworkHaaron Gonzalez
 
Creando Aplicaciones Web en el 2015
 Creando Aplicaciones Web en el 2015 Creando Aplicaciones Web en el 2015
Creando Aplicaciones Web en el 2015Globant
 
Combinación ganadora: Plone como CMS, tu framework preferido como frontend
Combinación ganadora: Plone como CMS, tu framework preferido como frontendCombinación ganadora: Plone como CMS, tu framework preferido como frontend
Combinación ganadora: Plone como CMS, tu framework preferido como frontendmenttes
 

Similar to React para ASP.NET (20)

2018.sps madrid.spfx workshop
2018.sps madrid.spfx workshop2018.sps madrid.spfx workshop
2018.sps madrid.spfx workshop
 
Efc programación .net-luis fernando aguas - 22012022 1700
Efc programación .net-luis fernando aguas - 22012022 1700Efc programación .net-luis fernando aguas - 22012022 1700
Efc programación .net-luis fernando aguas - 22012022 1700
 
EFC-Programación .net-Luis Fernando Aguas - 15012022 1500.pptx
EFC-Programación .net-Luis Fernando Aguas - 15012022 1500.pptxEFC-Programación .net-Luis Fernando Aguas - 15012022 1500.pptx
EFC-Programación .net-Luis Fernando Aguas - 15012022 1500.pptx
 
Jsf Java Server Faces
Jsf   Java Server FacesJsf   Java Server Faces
Jsf Java Server Faces
 
VLCTechFest - Simplificando Controladores: Una introducción a Action-Domain ...
VLCTechFest -  Simplificando Controladores: Una introducción a Action-Domain ...VLCTechFest -  Simplificando Controladores: Una introducción a Action-Domain ...
VLCTechFest - Simplificando Controladores: Una introducción a Action-Domain ...
 
Semana 2 Configuración entorno de desarrollo
Semana 2   Configuración entorno de desarrolloSemana 2   Configuración entorno de desarrollo
Semana 2 Configuración entorno de desarrollo
 
Framework Catalyst
Framework CatalystFramework Catalyst
Framework Catalyst
 
Primeros pasos Symfony PHPVigo
Primeros pasos Symfony PHPVigoPrimeros pasos Symfony PHPVigo
Primeros pasos Symfony PHPVigo
 
Reactvolution
ReactvolutionReactvolution
Reactvolution
 
Angular Fundamentals
Angular FundamentalsAngular Fundamentals
Angular Fundamentals
 
5.- PPT 2022 05 U01 T01 Desarrollo de Servicios Web I (1915).pptx
5.- PPT 2022 05 U01 T01 Desarrollo de Servicios Web I (1915).pptx5.- PPT 2022 05 U01 T01 Desarrollo de Servicios Web I (1915).pptx
5.- PPT 2022 05 U01 T01 Desarrollo de Servicios Web I (1915).pptx
 
Introducción a react + redux
Introducción a react + reduxIntroducción a react + redux
Introducción a react + redux
 
Herramientas Digitales
Herramientas DigitalesHerramientas Digitales
Herramientas Digitales
 
Patrones de diseño I
Patrones de diseño IPatrones de diseño I
Patrones de diseño I
 
Presentacion Ruby on Rails en Universidad Autónoma 2009
Presentacion Ruby on Rails en Universidad Autónoma 2009Presentacion Ruby on Rails en Universidad Autónoma 2009
Presentacion Ruby on Rails en Universidad Autónoma 2009
 
Introducción a SharePoint Framework
Introducción a SharePoint FrameworkIntroducción a SharePoint Framework
Introducción a SharePoint Framework
 
(25.03) RUN 09 - Sesiones Desarrollo - SI 2.0
(25.03) RUN 09 - Sesiones Desarrollo - SI 2.0(25.03) RUN 09 - Sesiones Desarrollo - SI 2.0
(25.03) RUN 09 - Sesiones Desarrollo - SI 2.0
 
Creando Aplicaciones Web en el 2015
 Creando Aplicaciones Web en el 2015 Creando Aplicaciones Web en el 2015
Creando Aplicaciones Web en el 2015
 
Combinación ganadora: Plone como CMS, tu framework preferido como frontend
Combinación ganadora: Plone como CMS, tu framework preferido como frontendCombinación ganadora: Plone como CMS, tu framework preferido como frontend
Combinación ganadora: Plone como CMS, tu framework preferido como frontend
 
S4-PD1.pptx
S4-PD1.pptxS4-PD1.pptx
S4-PD1.pptx
 

More from Alberto Diaz Martin

Microsoft 365 Virtual 2020 Spain - Microsoft Graph Search API
Microsoft 365 Virtual 2020 Spain - Microsoft Graph Search APIMicrosoft 365 Virtual 2020 Spain - Microsoft Graph Search API
Microsoft 365 Virtual 2020 Spain - Microsoft Graph Search APIAlberto Diaz Martin
 
DotNet Conf Valencia 2019 - Building cloud native apps with .NRT core 3.0 and...
DotNet Conf Valencia 2019 - Building cloud native apps with .NRT core 3.0 and...DotNet Conf Valencia 2019 - Building cloud native apps with .NRT core 3.0 and...
DotNet Conf Valencia 2019 - Building cloud native apps with .NRT core 3.0 and...Alberto Diaz Martin
 
GAB 2019 - Graph as a data store
GAB 2019 - Graph as a data storeGAB 2019 - Graph as a data store
GAB 2019 - Graph as a data storeAlberto Diaz Martin
 
DotNet Conf Madrid 2019 - Whats New in ML.NET
DotNet Conf Madrid 2019 - Whats New in ML.NETDotNet Conf Madrid 2019 - Whats New in ML.NET
DotNet Conf Madrid 2019 - Whats New in ML.NETAlberto Diaz Martin
 
DotNet Conf Madrid 2019 - ASP.NET Core 3
DotNet Conf Madrid 2019 - ASP.NET Core 3DotNet Conf Madrid 2019 - ASP.NET Core 3
DotNet Conf Madrid 2019 - ASP.NET Core 3Alberto Diaz Martin
 
SQL Saturday Madrid 2019 - Data model with Azure Cosmos DB
SQL Saturday Madrid 2019 - Data model with Azure Cosmos DBSQL Saturday Madrid 2019 - Data model with Azure Cosmos DB
SQL Saturday Madrid 2019 - Data model with Azure Cosmos DBAlberto Diaz Martin
 
SharePoint Saturday Madrid 2019 - Productivity based on AI
SharePoint Saturday Madrid 2019 - Productivity based on AISharePoint Saturday Madrid 2019 - Productivity based on AI
SharePoint Saturday Madrid 2019 - Productivity based on AIAlberto Diaz Martin
 
Dynamics Saturday Madrid 2019 - AI to improve productivity
Dynamics Saturday Madrid 2019 - AI to improve productivityDynamics Saturday Madrid 2019 - AI to improve productivity
Dynamics Saturday Madrid 2019 - AI to improve productivityAlberto Diaz Martin
 
TenerifeDev - NLPs and how to develop for Alexa and Google Assistant
TenerifeDev - NLPs and how to develop for Alexa and Google AssistantTenerifeDev - NLPs and how to develop for Alexa and Google Assistant
TenerifeDev - NLPs and how to develop for Alexa and Google AssistantAlberto Diaz Martin
 
NetCoreConf Barcelona 2019 - DotNet Assistants
NetCoreConf Barcelona 2019 - DotNet AssistantsNetCoreConf Barcelona 2019 - DotNet Assistants
NetCoreConf Barcelona 2019 - DotNet AssistantsAlberto Diaz Martin
 
Global Integration Bootcamp 2018 - Gobierno de APIs
Global Integration Bootcamp 2018 - Gobierno de APIsGlobal Integration Bootcamp 2018 - Gobierno de APIs
Global Integration Bootcamp 2018 - Gobierno de APIsAlberto Diaz Martin
 
Gab 2018 seguridad y escalado en azure service fabric
Gab 2018   seguridad y escalado en azure service fabricGab 2018   seguridad y escalado en azure service fabric
Gab 2018 seguridad y escalado en azure service fabricAlberto Diaz Martin
 
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
 
Dynamics 365 Saturday Madrid 2018 - Otro ALM es posible para Dynamics 365
Dynamics 365 Saturday Madrid 2018 - Otro ALM es posible para Dynamics 365Dynamics 365 Saturday Madrid 2018 - Otro ALM es posible para Dynamics 365
Dynamics 365 Saturday Madrid 2018 - Otro ALM es posible para Dynamics 365Alberto Diaz Martin
 
Azure4Research - Big Data Analytics con Hadoop, Spark y Power BI
Azure4Research - Big Data Analytics con Hadoop, Spark y Power BIAzure4Research - Big Data Analytics con Hadoop, Spark y Power BI
Azure4Research - Big Data Analytics con Hadoop, Spark y Power BIAlberto Diaz Martin
 
ENCAMINA - El flash de Inteligencia Artificial
ENCAMINA - El flash de Inteligencia ArtificialENCAMINA - El flash de Inteligencia Artificial
ENCAMINA - El flash de Inteligencia ArtificialAlberto Diaz Martin
 
Ai & Data Analytics 2018 - Azure Databricks for data scientist
Ai & Data Analytics 2018 - Azure Databricks for data scientistAi & Data Analytics 2018 - Azure Databricks for data scientist
Ai & Data Analytics 2018 - Azure Databricks for data scientistAlberto Diaz Martin
 
Global AI Bootcamp Madrid - Azure Databricks
Global AI Bootcamp Madrid - Azure DatabricksGlobal AI Bootcamp Madrid - Azure Databricks
Global AI Bootcamp Madrid - Azure DatabricksAlberto Diaz Martin
 
TenerifeDev - Intro to Microservices
TenerifeDev - Intro to MicroservicesTenerifeDev - Intro to Microservices
TenerifeDev - Intro to MicroservicesAlberto Diaz Martin
 
TenerifeDev - Azure Service Fabric
TenerifeDev - Azure Service FabricTenerifeDev - Azure Service Fabric
TenerifeDev - Azure Service FabricAlberto Diaz Martin
 

More from Alberto Diaz Martin (20)

Microsoft 365 Virtual 2020 Spain - Microsoft Graph Search API
Microsoft 365 Virtual 2020 Spain - Microsoft Graph Search APIMicrosoft 365 Virtual 2020 Spain - Microsoft Graph Search API
Microsoft 365 Virtual 2020 Spain - Microsoft Graph Search API
 
DotNet Conf Valencia 2019 - Building cloud native apps with .NRT core 3.0 and...
DotNet Conf Valencia 2019 - Building cloud native apps with .NRT core 3.0 and...DotNet Conf Valencia 2019 - Building cloud native apps with .NRT core 3.0 and...
DotNet Conf Valencia 2019 - Building cloud native apps with .NRT core 3.0 and...
 
GAB 2019 - Graph as a data store
GAB 2019 - Graph as a data storeGAB 2019 - Graph as a data store
GAB 2019 - Graph as a data store
 
DotNet Conf Madrid 2019 - Whats New in ML.NET
DotNet Conf Madrid 2019 - Whats New in ML.NETDotNet Conf Madrid 2019 - Whats New in ML.NET
DotNet Conf Madrid 2019 - Whats New in ML.NET
 
DotNet Conf Madrid 2019 - ASP.NET Core 3
DotNet Conf Madrid 2019 - ASP.NET Core 3DotNet Conf Madrid 2019 - ASP.NET Core 3
DotNet Conf Madrid 2019 - ASP.NET Core 3
 
SQL Saturday Madrid 2019 - Data model with Azure Cosmos DB
SQL Saturday Madrid 2019 - Data model with Azure Cosmos DBSQL Saturday Madrid 2019 - Data model with Azure Cosmos DB
SQL Saturday Madrid 2019 - Data model with Azure Cosmos DB
 
SharePoint Saturday Madrid 2019 - Productivity based on AI
SharePoint Saturday Madrid 2019 - Productivity based on AISharePoint Saturday Madrid 2019 - Productivity based on AI
SharePoint Saturday Madrid 2019 - Productivity based on AI
 
Dynamics Saturday Madrid 2019 - AI to improve productivity
Dynamics Saturday Madrid 2019 - AI to improve productivityDynamics Saturday Madrid 2019 - AI to improve productivity
Dynamics Saturday Madrid 2019 - AI to improve productivity
 
TenerifeDev - NLPs and how to develop for Alexa and Google Assistant
TenerifeDev - NLPs and how to develop for Alexa and Google AssistantTenerifeDev - NLPs and how to develop for Alexa and Google Assistant
TenerifeDev - NLPs and how to develop for Alexa and Google Assistant
 
NetCoreConf Barcelona 2019 - DotNet Assistants
NetCoreConf Barcelona 2019 - DotNet AssistantsNetCoreConf Barcelona 2019 - DotNet Assistants
NetCoreConf Barcelona 2019 - DotNet Assistants
 
Global Integration Bootcamp 2018 - Gobierno de APIs
Global Integration Bootcamp 2018 - Gobierno de APIsGlobal Integration Bootcamp 2018 - Gobierno de APIs
Global Integration Bootcamp 2018 - Gobierno de APIs
 
Gab 2018 seguridad y escalado en azure service fabric
Gab 2018   seguridad y escalado en azure service fabricGab 2018   seguridad y escalado en azure service fabric
Gab 2018 seguridad y escalado en azure service fabric
 
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
 
Dynamics 365 Saturday Madrid 2018 - Otro ALM es posible para Dynamics 365
Dynamics 365 Saturday Madrid 2018 - Otro ALM es posible para Dynamics 365Dynamics 365 Saturday Madrid 2018 - Otro ALM es posible para Dynamics 365
Dynamics 365 Saturday Madrid 2018 - Otro ALM es posible para Dynamics 365
 
Azure4Research - Big Data Analytics con Hadoop, Spark y Power BI
Azure4Research - Big Data Analytics con Hadoop, Spark y Power BIAzure4Research - Big Data Analytics con Hadoop, Spark y Power BI
Azure4Research - Big Data Analytics con Hadoop, Spark y Power BI
 
ENCAMINA - El flash de Inteligencia Artificial
ENCAMINA - El flash de Inteligencia ArtificialENCAMINA - El flash de Inteligencia Artificial
ENCAMINA - El flash de Inteligencia Artificial
 
Ai & Data Analytics 2018 - Azure Databricks for data scientist
Ai & Data Analytics 2018 - Azure Databricks for data scientistAi & Data Analytics 2018 - Azure Databricks for data scientist
Ai & Data Analytics 2018 - Azure Databricks for data scientist
 
Global AI Bootcamp Madrid - Azure Databricks
Global AI Bootcamp Madrid - Azure DatabricksGlobal AI Bootcamp Madrid - Azure Databricks
Global AI Bootcamp Madrid - Azure Databricks
 
TenerifeDev - Intro to Microservices
TenerifeDev - Intro to MicroservicesTenerifeDev - Intro to Microservices
TenerifeDev - Intro to Microservices
 
TenerifeDev - Azure Service Fabric
TenerifeDev - Azure Service FabricTenerifeDev - Azure Service Fabric
TenerifeDev - Azure Service Fabric
 

Recently uploaded

El_Blog_como_herramienta_de_publicacion_y_consulta_de_investigacion.pptx
El_Blog_como_herramienta_de_publicacion_y_consulta_de_investigacion.pptxEl_Blog_como_herramienta_de_publicacion_y_consulta_de_investigacion.pptx
El_Blog_como_herramienta_de_publicacion_y_consulta_de_investigacion.pptxAlexander López
 
Presentación inteligencia artificial en la actualidad
Presentación inteligencia artificial en la actualidadPresentación inteligencia artificial en la actualidad
Presentación inteligencia artificial en la actualidadMiguelAngelVillanuev48
 
tarea de exposicion de senati zzzzzzzzzz
tarea de exposicion de senati zzzzzzzzzztarea de exposicion de senati zzzzzzzzzz
tarea de exposicion de senati zzzzzzzzzzAlexandergo5
 
Los Microcontroladores PIC, Aplicaciones
Los Microcontroladores PIC, AplicacionesLos Microcontroladores PIC, Aplicaciones
Los Microcontroladores PIC, AplicacionesEdomar AR
 
Mapa-conceptual-del-Origen-del-Universo-3.pptx
Mapa-conceptual-del-Origen-del-Universo-3.pptxMapa-conceptual-del-Origen-del-Universo-3.pptx
Mapa-conceptual-del-Origen-del-Universo-3.pptxMidwarHenryLOZAFLORE
 
Excel (1) tecnologia.pdf trabajo Excel taller
Excel  (1) tecnologia.pdf trabajo Excel tallerExcel  (1) tecnologia.pdf trabajo Excel taller
Excel (1) tecnologia.pdf trabajo Excel tallerValentinaTabares11
 
FloresMorales_Montserrath_M1S3AI6 (1).pptx
FloresMorales_Montserrath_M1S3AI6 (1).pptxFloresMorales_Montserrath_M1S3AI6 (1).pptx
FloresMorales_Montserrath_M1S3AI6 (1).pptx241522327
 
AREA TECNOLOGIA E INFORMATICA TRABAJO EN EQUIPO
AREA TECNOLOGIA E INFORMATICA TRABAJO EN EQUIPOAREA TECNOLOGIA E INFORMATICA TRABAJO EN EQUIPO
AREA TECNOLOGIA E INFORMATICA TRABAJO EN EQUIPOnarvaezisabella21
 
Medidas de formas, coeficiente de asimetría y coeficiente de curtosis.pptx
Medidas de formas, coeficiente de asimetría y coeficiente de curtosis.pptxMedidas de formas, coeficiente de asimetría y coeficiente de curtosis.pptx
Medidas de formas, coeficiente de asimetría y coeficiente de curtosis.pptxaylincamaho
 
Modelo de Presentacion Feria Robotica Educativa 2024 - Versión3.pptx
Modelo de Presentacion Feria Robotica Educativa 2024 - Versión3.pptxModelo de Presentacion Feria Robotica Educativa 2024 - Versión3.pptx
Modelo de Presentacion Feria Robotica Educativa 2024 - Versión3.pptxtjcesar1
 
TEMA 2 PROTOCOLO DE EXTRACCION VEHICULAR.ppt
TEMA 2 PROTOCOLO DE EXTRACCION VEHICULAR.pptTEMA 2 PROTOCOLO DE EXTRACCION VEHICULAR.ppt
TEMA 2 PROTOCOLO DE EXTRACCION VEHICULAR.pptJavierHerrera662252
 
LAS_TIC_COMO_HERRAMIENTAS_EN_LA_INVESTIGACIÓN.pptx
LAS_TIC_COMO_HERRAMIENTAS_EN_LA_INVESTIGACIÓN.pptxLAS_TIC_COMO_HERRAMIENTAS_EN_LA_INVESTIGACIÓN.pptx
LAS_TIC_COMO_HERRAMIENTAS_EN_LA_INVESTIGACIÓN.pptxAlexander López
 
Crear un recurso multimedia. Maricela_Ponce_DomingoM1S3AI6-1.pptx
Crear un recurso multimedia. Maricela_Ponce_DomingoM1S3AI6-1.pptxCrear un recurso multimedia. Maricela_Ponce_DomingoM1S3AI6-1.pptx
Crear un recurso multimedia. Maricela_Ponce_DomingoM1S3AI6-1.pptxNombre Apellidos
 
GonzalezGonzalez_Karina_M1S3AI6... .pptx
GonzalezGonzalez_Karina_M1S3AI6... .pptxGonzalezGonzalez_Karina_M1S3AI6... .pptx
GonzalezGonzalez_Karina_M1S3AI6... .pptx241523733
 
Actividad integradora 6 CREAR UN RECURSO MULTIMEDIA
Actividad integradora 6    CREAR UN RECURSO MULTIMEDIAActividad integradora 6    CREAR UN RECURSO MULTIMEDIA
Actividad integradora 6 CREAR UN RECURSO MULTIMEDIA241531640
 
Trabajo de tecnología excel avanzado.pdf
Trabajo de tecnología excel avanzado.pdfTrabajo de tecnología excel avanzado.pdf
Trabajo de tecnología excel avanzado.pdfedepmariaperez
 
El uso de las TIC's en la vida cotidiana.
El uso de las TIC's en la vida cotidiana.El uso de las TIC's en la vida cotidiana.
El uso de las TIC's en la vida cotidiana.241514949
 
El uso de las tic en la vida ,lo importante que son
El uso de las tic en la vida ,lo importante  que sonEl uso de las tic en la vida ,lo importante  que son
El uso de las tic en la vida ,lo importante que son241514984
 
Red Dorsal Nacional de Fibra Óptica y Redes Regionales del Perú
Red Dorsal Nacional de Fibra Óptica y Redes Regionales del PerúRed Dorsal Nacional de Fibra Óptica y Redes Regionales del Perú
Red Dorsal Nacional de Fibra Óptica y Redes Regionales del PerúCEFERINO DELGADO FLORES
 
Presentación sobre la Inteligencia Artificial
Presentación sobre la Inteligencia ArtificialPresentación sobre la Inteligencia Artificial
Presentación sobre la Inteligencia Artificialcynserafini89
 

Recently uploaded (20)

El_Blog_como_herramienta_de_publicacion_y_consulta_de_investigacion.pptx
El_Blog_como_herramienta_de_publicacion_y_consulta_de_investigacion.pptxEl_Blog_como_herramienta_de_publicacion_y_consulta_de_investigacion.pptx
El_Blog_como_herramienta_de_publicacion_y_consulta_de_investigacion.pptx
 
Presentación inteligencia artificial en la actualidad
Presentación inteligencia artificial en la actualidadPresentación inteligencia artificial en la actualidad
Presentación inteligencia artificial en la actualidad
 
tarea de exposicion de senati zzzzzzzzzz
tarea de exposicion de senati zzzzzzzzzztarea de exposicion de senati zzzzzzzzzz
tarea de exposicion de senati zzzzzzzzzz
 
Los Microcontroladores PIC, Aplicaciones
Los Microcontroladores PIC, AplicacionesLos Microcontroladores PIC, Aplicaciones
Los Microcontroladores PIC, Aplicaciones
 
Mapa-conceptual-del-Origen-del-Universo-3.pptx
Mapa-conceptual-del-Origen-del-Universo-3.pptxMapa-conceptual-del-Origen-del-Universo-3.pptx
Mapa-conceptual-del-Origen-del-Universo-3.pptx
 
Excel (1) tecnologia.pdf trabajo Excel taller
Excel  (1) tecnologia.pdf trabajo Excel tallerExcel  (1) tecnologia.pdf trabajo Excel taller
Excel (1) tecnologia.pdf trabajo Excel taller
 
FloresMorales_Montserrath_M1S3AI6 (1).pptx
FloresMorales_Montserrath_M1S3AI6 (1).pptxFloresMorales_Montserrath_M1S3AI6 (1).pptx
FloresMorales_Montserrath_M1S3AI6 (1).pptx
 
AREA TECNOLOGIA E INFORMATICA TRABAJO EN EQUIPO
AREA TECNOLOGIA E INFORMATICA TRABAJO EN EQUIPOAREA TECNOLOGIA E INFORMATICA TRABAJO EN EQUIPO
AREA TECNOLOGIA E INFORMATICA TRABAJO EN EQUIPO
 
Medidas de formas, coeficiente de asimetría y coeficiente de curtosis.pptx
Medidas de formas, coeficiente de asimetría y coeficiente de curtosis.pptxMedidas de formas, coeficiente de asimetría y coeficiente de curtosis.pptx
Medidas de formas, coeficiente de asimetría y coeficiente de curtosis.pptx
 
Modelo de Presentacion Feria Robotica Educativa 2024 - Versión3.pptx
Modelo de Presentacion Feria Robotica Educativa 2024 - Versión3.pptxModelo de Presentacion Feria Robotica Educativa 2024 - Versión3.pptx
Modelo de Presentacion Feria Robotica Educativa 2024 - Versión3.pptx
 
TEMA 2 PROTOCOLO DE EXTRACCION VEHICULAR.ppt
TEMA 2 PROTOCOLO DE EXTRACCION VEHICULAR.pptTEMA 2 PROTOCOLO DE EXTRACCION VEHICULAR.ppt
TEMA 2 PROTOCOLO DE EXTRACCION VEHICULAR.ppt
 
LAS_TIC_COMO_HERRAMIENTAS_EN_LA_INVESTIGACIÓN.pptx
LAS_TIC_COMO_HERRAMIENTAS_EN_LA_INVESTIGACIÓN.pptxLAS_TIC_COMO_HERRAMIENTAS_EN_LA_INVESTIGACIÓN.pptx
LAS_TIC_COMO_HERRAMIENTAS_EN_LA_INVESTIGACIÓN.pptx
 
Crear un recurso multimedia. Maricela_Ponce_DomingoM1S3AI6-1.pptx
Crear un recurso multimedia. Maricela_Ponce_DomingoM1S3AI6-1.pptxCrear un recurso multimedia. Maricela_Ponce_DomingoM1S3AI6-1.pptx
Crear un recurso multimedia. Maricela_Ponce_DomingoM1S3AI6-1.pptx
 
GonzalezGonzalez_Karina_M1S3AI6... .pptx
GonzalezGonzalez_Karina_M1S3AI6... .pptxGonzalezGonzalez_Karina_M1S3AI6... .pptx
GonzalezGonzalez_Karina_M1S3AI6... .pptx
 
Actividad integradora 6 CREAR UN RECURSO MULTIMEDIA
Actividad integradora 6    CREAR UN RECURSO MULTIMEDIAActividad integradora 6    CREAR UN RECURSO MULTIMEDIA
Actividad integradora 6 CREAR UN RECURSO MULTIMEDIA
 
Trabajo de tecnología excel avanzado.pdf
Trabajo de tecnología excel avanzado.pdfTrabajo de tecnología excel avanzado.pdf
Trabajo de tecnología excel avanzado.pdf
 
El uso de las TIC's en la vida cotidiana.
El uso de las TIC's en la vida cotidiana.El uso de las TIC's en la vida cotidiana.
El uso de las TIC's en la vida cotidiana.
 
El uso de las tic en la vida ,lo importante que son
El uso de las tic en la vida ,lo importante  que sonEl uso de las tic en la vida ,lo importante  que son
El uso de las tic en la vida ,lo importante que son
 
Red Dorsal Nacional de Fibra Óptica y Redes Regionales del Perú
Red Dorsal Nacional de Fibra Óptica y Redes Regionales del PerúRed Dorsal Nacional de Fibra Óptica y Redes Regionales del Perú
Red Dorsal Nacional de Fibra Óptica y Redes Regionales del Perú
 
Presentación sobre la Inteligencia Artificial
Presentación sobre la Inteligencia ArtificialPresentación sobre la Inteligencia Artificial
Presentación sobre la Inteligencia Artificial
 

React para ASP.NET

  • 1. una consultora tecnológica que piensa en colores para organizaciones vivas una consultora tecnológica que piensa en colores para organizaciones vivas React para desarrolladores de ASP.NET
  • 2. Alberto Diaz Martin alberto.diaz@encamina.com - @adiazcan Alberto Diaz cuenta con más de 15 años de experiencia en la Industria IT, todos ellos trabajando con tecnologías Microsoft. Actualmente, es Chief Technology Innovation Officer en ENCAMINA, liderando el desarrollo de software con tecnología Microsoft, y miembro del equipo de Dirección. Para la comunidad, trabaja como organizador y speaker de las conferencias más relevantes del mundo Microsoft en España, en las cuales es uno de los referentes en SharePoint, Office 365 y Azure. Autor de diversos libros y artículos en revistas profesionales y blogs, en 2013 empezó a formar parte del equipo de Dirección de CompartiMOSS, una revista digital sobre tecnologías Microsoft. Desde 2011 ha sido nombrado Microsoft MVP, reconocimiento que ha renovado por séptimo año consecutivo. Se define como un geek, amante de los smartphones y desarrollador. Fundador de TenerifeDev (www.tenerifedev.com), un grupo de usuarios de .NET en Tenerife, y coordinador de SUGES (Grupo de Usuarios de SharePoint de España, www.suges.es)
  • 3. 2002 ASP.NET 1.0 2006 JQUERY 2007 ASP.NET 3.5 2009 ASP.NET MVC 1.0 2010 Knockout JS 2012 ASP.NET WEB API 1.0
  • 6. Expectativas de los usuarios Rápido Rich Clients Reactivo SEO Rápido MVC Backbone Angular Knockout View ReactJS Handlebars.js
  • 7. • Una librería JavaScript para construer interfaces de usuario (UI) • Open Source, declarativa, basada en components • No es un framework MVC • Isomorphic App, can render on client and server • Unidirectional Flows. No two-way binding ¿Qué es React?
  • 8. Con React creamos arboles de componentes, estos componentes pueden tener estado y propiedades. React Component 8 Componente Componente Componente Componente Componente App Header Menu Item Item Hello World Footer Item Item
  • 9. React Virtual DOM • React implementa un DOM Virtual – ReactDOM • ReactDOM es el encargado de renderizar los componentes React en el DOM del navegador • Virtual por: – Para cada objeto en el DOM, existe un objeto en el Virtual – Los cambios en los objetos virtuales, no fuerzan cambios en el navegador, se cambian cuando son renderizados – Es más eficiente el uso del Virtual DOM – Cuando se actualiza un componente en el Virtual DOM, React ejecuta un algoritmo de comparación para detectar los cambios y renderizarlos 9
  • 10. Nuestro HTML pero en JavaScript / Typescript JSX / TSX public render() { return ( <tr key={this.props.member.id}> <td> <span>{this.props.member.id}</span> </td> <td> <span>{this.props.member.login}</span> </td> </tr> ); } return ( React.createElement ("tr", {"key": this.props.member.id}, React.createElement("td", null, React.createElement("span", null, this.props.member.id)) , React.createElement("td", null, React.createElement("span", null, this.props.member.login)) );
  • 11. React Props • Son inmutables • Similares a atributos HTML • Se definen cuando el componente es creado • Ejemplo: un listado de clientes, los datos de un cliente, … 11
  • 12. React State • Mutables • Mantiene el estado del componente • Datos privados del componente • Responde a cambios en la interfaz 12
  • 14. Ciclo de vida de una aplicación web Browser MVC Get page Query API Get data Render React components HTML & JS WEB API Interaction With React Components Get data Get data JSON
  • 15. Ciclo de vida de ASP.NET 15
  • 16. Ciclo de vida de un Componente Tiene un ciclo de vida definido por los siguientes tipos de sucesos: – Eventos de montaje (mounting): métodos invocados cuando una instancia del componente está siendo creado e insertado (o eliminada) del DOM real. – Eventos de actualización (updating): métodos que se invocan cuando hay cambios en las propiedades o el estado de un componente. Una actualización dispara una re-renderización. – Eventos de manejo de errores: un componente puede capturar todos los errores producidos en su ejecución, o la ejecución de sus subcomponentes. 16
  • 17. Eventos de montaje • constructor(props): – se llama antes del montaje – se debe llamar a super(props) para una inicialización adecuada • componentWillMount(): – se invoca justo antes de que ocurra el montaje, antes de render • componentDidMount(): – se invoca justo después del montaje – se usa para la inicialización que depende de nodos del DOM, cargar datos desde red, etc. • componentWillUnmount(): – se invoca justo antes de remover el componente del DOM, y que éste sea destruido – se usa para realizar “limpieza”: cancelar operaciones pendientes, eliminar referencias, etc.
  • 18. Eventos de actualización • componentWillReceiveProps(nextProps): – se invoca justo antes que un componente montado reciba nuevas props – es útil para comparar lo pasado con lo futuro, por ejemplo actualizando el estado – no se invoca en el primer montaje • shouldComponentUpdate(nextProps, nextState): – se invoca antes de re-renderizar un componente cuyas props y state han cambiado – la idea es determinar si realmente es necesario re- renderizar el componente – debe retornar true o false, no se invoca en el primer renderizado • componentWillUpdate(nextProps, nextState): – se invoca justo antes de re-renderizar • componentDidUpdate(): – se invoca justo después de la actualización – no se invoca en el primer renderizado – sirve para operar en el DOM con el nuevo estado/props actualizados
  • 19. Eventos de manejo de errores ● componentDidCatch(error, info): – un componente se transforma en una frontera de errores al definir este método – se invoca cuando se captura un error en el componente o cualquiera de sus hijos, y que no haya sido capturado antes – permite manejar los errores, por ejemplo, mostrando una UI distinta o mensajes de error
  • 21. Eventos ● Los componentes React/HTML aceptan los “mismos” eventos que el HTML de verdad… ● Se escriben en camelCase: onClick, onChange, etc… ● Como valor del handler, debe ir una función, y no un string! ● Típicamente el handler es un método de la clase/componente, que debe ser asociado con bind
  • 22. IIS Express Project Templates React Toolchain ASP.NET React IIS Express Project Templates
  • 24. Webpack Esta herramienta se centra en simplificar la paquetizaciónde una web y nos permite trabajar con módulos ES6, pudiendo generar código compatible ES5.
  • 25. Typescript Typescript es un lenguaje open source, cuyo resultado de transpilación puede ser ES5 o ES6 (es decir javascript), ideado por Microsoft, adoptado por empresas como Google. Es 100% compatible con typescript, solo tenemos que hacer la prueba y renombrar un .js a .ts y sigue funcionando. ¿ Qué nos da? Dos características principales: tipos + intellisense y errores en tiempo de transpilación… dejándonos también puerta abierta a lo dinámico (e.g. any). PRODUCTIVIDAD El objetivo de typescript es que en unos años desaparezca, si una versión más moderna de ES incorporar dicho nivel de productividad
  • 28. 28 https://github.com/aspnet/JavaScriptServices • A set of client-side technologies for ASP.NET Core – Use Angular / React / Vue / Aurelia / Knockout / etc. – Build your client-side resources using Webpack. – Execute JavaScript on the server at runtime. • A set of NuGet/NPM packages that implement functionality for: – Invoking arbitrary NPM packages at runtime from .NET code – Server-side prerendering of SPA components – Webpack dev middleware – Hot module replacement (HMR) – Server-side and client-side routing integration – Server-side and client-side validation integration – "Lazy loading" for Knockout apps ASP.NET CORE JavaScript Services .NET
  • 29. ASP.NET Core JavaScript Services for React Webpack Dev Middleware and Hot Module Replacement • You don't have to run webpack manually or set up any file watchers • The browser is always guaranteed to receive up-to-date built output • The built artifacts are normally served instantly or at least extremely quickly, because internally, an instance of webpack stays active and has partial compilation states pre-cached in memory SPA fallback route Server-side pre-rendering <div id="react-app" asp-prerender- module="ClientApp/dist/main-server">Loading...</div>
  • 32. Intro Redux Redux es un contenedor de estado para aplicaciones javascript. Nos permite crear aplicaciones que tengan un comportamiento consistente. Se puede ejecutar en diferentes entornos (cliente, servidor, nativo), y desde diferentes librerías (angularjs, react…) Es fácil de añadirle pruebas unitarias Sólo pesa 2Kb
  • 33. Esquema Redux Container Component Reducers Validations StateStateState Props - Action State (readonly) Updates + render Actions Update State Presentation Component Props Dispatch Action
  • 34. State Tenemos que pensar del Estado que le llega a un component de React como si de un fotograma de un videojuego se tratase. El fotograma actual no se puede modificar, puedo enviar mensajes para configurar el siguiente. es decir el estado actual que llega al componente es de solo lectura / inmutable / desconectado, a la siguiente modificación le llegara un nuevo estado. ¿ Cómo hacemos esto eficiente… muy eficiente ? Direcciones de memoria.
  • 35. State {fondo: gris, estado: encogido} {fondo: gris, estado: estirando} {fondo: gris, estado: estirado} Reducer calcula siguiente estado Se lanza render del componente Reducer calcula siguiente estado Se lanza render del componente Si hacemos una modificación directamente en el fotograma se pierde
  • 37. Para estar al loro de nuestros próximos eventos…¡síguenos! ENCAMINA @ENCAMINA+Encamina Piensa en Colores ENCAMINA MyENCAMINA ENCAMINA.TV encamina_piensa_en_colores Encamina Piensa en Colores

Editor's Notes

  1. create-react-app clock-demo --scripts-version=react-scripts-ts
  2. create-react-app clock-demo --scripts-version=react-scripts-ts
  3. 22
  4. create-react-app clock-demo --scripts-version=react-scripts-ts