{"id":1261,"date":"2021-01-21T11:58:23","date_gmt":"2021-01-21T11:58:23","guid":{"rendered":"http:\/\/blogs.encamina.com\/piensa-en-software-desarrolla-en-colores\/?p=1261"},"modified":"2021-02-04T11:10:11","modified_gmt":"2021-02-04T11:10:11","slug":"react-hooks-presente-y-futuro","status":"publish","type":"post","link":"https:\/\/blogs.encamina.com\/piensa-en-software-desarrolla-en-colores\/react-hooks-presente-y-futuro\/","title":{"rendered":"React Hooks, presente y futuro"},"content":{"rendered":"<p><img loading=\"lazy\" decoding=\"async\" class=\"aligncenter size-full wp-image-1269\" src=\"http:\/\/blogs.encamina.com\/piensa-en-software-desarrolla-en-colores\/wp-content\/uploads\/sites\/21\/2021\/01\/react-hook.png\" alt=\"\" width=\"1580\" height=\"895\" srcset=\"https:\/\/encaminablogs.wpenginepowered.com\/piensa-en-software-desarrolla-en-colores\/wp-content\/uploads\/sites\/21\/2021\/01\/react-hook.png 1580w, https:\/\/encaminablogs.wpenginepowered.com\/piensa-en-software-desarrolla-en-colores\/wp-content\/uploads\/sites\/21\/2021\/01\/react-hook-300x170.png 300w, https:\/\/encaminablogs.wpenginepowered.com\/piensa-en-software-desarrolla-en-colores\/wp-content\/uploads\/sites\/21\/2021\/01\/react-hook-1024x580.png 1024w, https:\/\/encaminablogs.wpenginepowered.com\/piensa-en-software-desarrolla-en-colores\/wp-content\/uploads\/sites\/21\/2021\/01\/react-hook-768x435.png 768w, https:\/\/encaminablogs.wpenginepowered.com\/piensa-en-software-desarrolla-en-colores\/wp-content\/uploads\/sites\/21\/2021\/01\/react-hook-1536x870.png 1536w, https:\/\/encaminablogs.wpenginepowered.com\/piensa-en-software-desarrolla-en-colores\/wp-content\/uploads\/sites\/21\/2021\/01\/react-hook-610x346.png 610w\" sizes=\"auto, (max-width: 1580px) 100vw, 1580px\" \/><\/p>\n<p>React est\u00e1 lleno de patrones de dise\u00f1o interesantes, cuando se introdujeron los Hooks, elimin\u00f3 muchos de los problemas que la gente ten\u00eda con las caracter\u00edsticas m\u00e1s frustrantes, como las clases y los m\u00e9todos del ciclo de vida. En este art\u00edculo vamos a hablar de la incorporaci\u00f3n de los Hooks en React y c\u00f3mo nos permite desarrollar componentes funcionales con estado y ciclo de vida y, por lo tanto, prescindir de los componentes de clase.<\/p>\n<p><!--more--><\/p>\n<p>Lo primero hay que decir que, a pesar de que ya se llevan usando alg\u00fan tiempo, van a seguir estando muy presentes en nuestros desarrollos, ya que nos proporcionan un mejor mantenimiento y legibilidad del c\u00f3digo. Al ser funciones aisladas, nos permite reutilizar la l\u00f3gica de estados entre componentes. Gracias a los Hooks, podemos extraer l\u00f3gica de estado de un componente, de tal forma que \u00e9ste, pueda ser probado y reusado independientemente.<\/p>\n<p>Los dos patrones principales para compartir c\u00f3digo entre componentes (hasta ese momento), eran los <strong>High-Order Components<\/strong> y las <strong>Render Props.<\/strong> Si bien son formas correctas para lograr este objetivo, en algunos casos complejos esto podr\u00eda derivar en un \u00e1rbol de componentes anidados tan extenso que se conoce como Wrapper Hell.<\/p>\n<p>Otro\u00a0problema\u00a0habitual\u00a0es el\u00a0<strong>desarrollo\u00a0de componentes complejos y extensos<\/strong>. En ocasiones, existe la\u00a0necesidad\u00a0de\u00a0tener\u00a0que\u00a0dividir\u00a0la\u00a0l\u00f3gica\u00a0de una misma funcionalidad utilizando los m\u00e9todos componentDidMount, componentDidUpdate, componentWillUnmount. Por\u00a0ejemplo, si tenemos que\u00a0agregar\u00a0eventListeners en componentDidMount y limpiarlos en componentWillUnmount, estamos separando\u00a0l\u00f3gica\u00a0relacionada, por la\u00a0necesidad\u00a0de\u00a0tener\u00a0que\u00a0realizar\u00a0estas acciones en\u00a0funci\u00f3n\u00a0del\u00a0ciclo\u00a0de\u00a0vida\u00a0del componente.<\/p>\n<h2>\u00bfPor qu\u00e9 React-Typescript?<\/h2>\n<p>Usamos React con Typescript para sacar el m\u00e1ximo rendimiento de React.<\/p>\n<p>Escribir c\u00f3digo tipado nos permite desarrollar c\u00f3digo m\u00e1s limpio y legible que est\u00e1 funcionando, y sin los errores que nos acarrea un js nativo, y si a eso agregamos que Typescript tiene muchas similitudes con otros lenguajes con tipado como C# nos permite un r\u00e1pido aprendizaje.<\/p>\n<p>Nuestro c\u00f3digo Typescript a la hora de generar la build la magia de React lo transpila y genera un c\u00f3digo js minificado de nuestra aplicaci\u00f3n lo que nos permite poder correrla bajo cualquier explorador y con un peso en la build final muy reducido (sobre IE y Edge no funciona al 100%, por lo que si perdemos funcionalidad deberemos instalar un Polyfill)<\/p>\n<p>Otra de las razones es que no dependemos de Babel y dem\u00e1s plugins de Babel, lo que hace que tengamos un espacio de trabajo no tan lleno de dependencias. Si utilizaremos otras que nos facilitan la flexibilidad y agilidad en la hora del desarrollo sin que notemos apenas peso en las dependencias.<\/p>\n<h2>CSS<\/h2>\n<p>En verdad no usaremos Css utilizaremos <strong>Sass<\/strong>.\u00a0SASS es un preprocesador. Podr\u00edamos\u00a0 elegir otras alternativas como Less o Stylus y ser\u00edan perfectamente v\u00e1lidos tambi\u00e9n, ya que al final todos ofrecen m\u00e1s o menos las mismas utilidades.<\/p>\n<p>Sass se ha convertido en el preprocesador m\u00e1s usado y el m\u00e1s demandado, por lo que al haber recibido un mayor apoyo de la comunidad es m\u00e1s factible que encuentres soluciones ante posibles adversidades.<\/p>\n<p>Al desarrollar con un preprocesador se consigue principalmente un ahorro de tiempo, ya que tenemos que escribir menos c\u00f3digo para hacer las cosas. Pero tambi\u00e9n conseguimos una mayor facilidad de mantenimiento del c\u00f3digo, gracias a una mejor organizaci\u00f3n del c\u00f3digo y la posibilidad de editar una vez ciertos valores y que afecten a decenas, o cientos, de lugares del c\u00f3digo CSS generado.<\/p>\n<p>Tan sencillo como usar una dependencia para que nuestro compilador de React entienda Sass y a la hora de generar la build de igual manera que trasnpila el typescript el preprocesador nos genera un fichero Css \u00fanico entendible por todos los exploradores.<\/p>\n<h2>Sintaxis SCSS<\/h2>\n<p>Dentro de lo que entendemos por Sass usaremos la Sintaxis SCSS. En la pr\u00e1ctica, aunque podr\u00eda ser m\u00e1s r\u00e1pido escribir con sintaxis Sass, es menos recomendable, porque te aleja m\u00e1s del propio lenguaje CSS.<\/p>\n<p>Al usar SCSS tienes la ventaja de que tu c\u00f3digo CSS de toda la vida ser\u00e1 v\u00e1lido para el preprocesador, pudiendo reutilizar m\u00e1s tus conocimientos y posibles c\u00f3digos de estilo con los que vengas trabajando en los proyectos.<\/p>\n<p>Mejoraremos mucho la carga con archivos css modulares, nuestra aplicaci\u00f3n no tendr\u00e1 que cargar todos los archivos necesarios de fonts, css de todas las p\u00e1ginas, bootstraps, etc., esos archivos hay que cargarlos por separado antes del render de la p\u00e1gina y ralentizan mucho la fase m\u00e1s importante de la carga de una web. Si los incluyes como @imports de SASS en una hoja.scss y luego compilas, tendr\u00e1s un \u00fanico archivo .css y una \u00fanica llamada al servidor con todo lo que necesitas.<\/p>\n<p>Otra de las ventajas es que podemos incluir el plugin autoprefixer que a\u00f1ade los -webkit-,\u00a0 -moz-,\u00a0 -msfilter- etc. necesarios para visualizarse correctamente en todos los navegadores que le configuremos.<\/p>\n<p>Y para m\u00ed la mayor ventaja es que te avisa de los errores. Trabajando con .css puedes olvidar un punto y coma, o equivocarte en la ortograf\u00eda, y no te dar\u00e1s cuenta hasta que visites la parte de la web afectada, SASS no te permite compilar un archivo si contiene errores, avis\u00e1ndote de su localizaci\u00f3n, y en algunos editores como Visual Studio Code que es nuestro caso, en tiempo real mientras escribes el c\u00f3digo.<\/p>\n<h2>Webpack<\/h2>\n<p>Webpack es un sistema de bundling para preparar el desarrollo de una aplicaci\u00f3n web para producci\u00f3n. En cierta medida se puede considerar un Browserify avanzado ya que tiene muchas opciones de configuraci\u00f3n.<\/p>\n<p>Tambi\u00e9n se puede considerar una evoluci\u00f3n de Grunt y Gulp, ya que permite de alguna manera automatizar los procesos principales que son transpilar y preprocesar c\u00f3digo de .scss a .css, de ES7 a ES5\/6, etc&#8230;<\/p>\n<p>Para poder utilizar Webpack en tu proyecto web debes tener instalado Node.js en tu equipo<\/p>\n<p>En nuestro caso, el cr\u00e9ate-app ya nos genera un webpack b\u00e1sico para poder trabajar, obviamente con un buen manejo del webpack podremos generar componentes m\u00e1s optimizados.<\/p>\n<h2>Configuraci\u00f3n de entorno<\/h2>\n<ul>\n<li>Instalacion de NodeJs y Typescript, se recomienda la \u00faltima versi\u00f3n estable<\/li>\n<\/ul>\n<p><a href=\"https:\/\/nodejs.org\/es\/download\/\">https:\/\/nodejs.org\/es\/download\/<\/a><\/p>\n<ul>\n<li>Comprobar la versi\u00f3n de node: en una consola node -v<\/li>\n<li>Sobre la consola ejecutar: <em>npm\u00a0install\u00a0-g\u00a0typescript<\/em><\/li>\n<li>Comprobar la versi\u00f3n de typescript: en una consola Typescript -v<\/li>\n<li>Instalar Visual studio Code<\/li>\n<\/ul>\n<p><a href=\"https:\/\/code.visualstudio.com\/download\">https:\/\/code.visualstudio.com\/download<\/a><\/p>\n<ul>\n<li>Crear una carpeta en la ra\u00edz del repositorio ReactHook, a ra\u00edz de esta carpeta se crear\u00e1 la app de react y dentro los los componentes de la misma.<\/li>\n<li>Sobre la carpeta que hemos creado en la consola procedemos con los siguientes pasos:<\/li>\n<\/ul>\n<p>Algo a tener en cuenta es que los directorios, nombre de carpetas ficheros y dem\u00e1s deben ir en min\u00fasculas.<\/p>\n<ol>\n<li>Vamos a crear la base de una aplicaci\u00f3n de React con Typescript.<\/li>\n<\/ol>\n<p><em>Npx create react-app -my_name_app \u2013typescript <\/em><\/p>\n<p><img loading=\"lazy\" decoding=\"async\" class=\"aligncenter size-full wp-image-1262\" src=\"http:\/\/blogs.encamina.com\/piensa-en-software-desarrolla-en-colores\/wp-content\/uploads\/sites\/21\/2021\/01\/Imagen-1.png\" alt=\"\" width=\"1410\" height=\"664\" srcset=\"https:\/\/encaminablogs.wpenginepowered.com\/piensa-en-software-desarrolla-en-colores\/wp-content\/uploads\/sites\/21\/2021\/01\/Imagen-1.png 1410w, https:\/\/encaminablogs.wpenginepowered.com\/piensa-en-software-desarrolla-en-colores\/wp-content\/uploads\/sites\/21\/2021\/01\/Imagen-1-300x141.png 300w, https:\/\/encaminablogs.wpenginepowered.com\/piensa-en-software-desarrolla-en-colores\/wp-content\/uploads\/sites\/21\/2021\/01\/Imagen-1-1024x482.png 1024w, https:\/\/encaminablogs.wpenginepowered.com\/piensa-en-software-desarrolla-en-colores\/wp-content\/uploads\/sites\/21\/2021\/01\/Imagen-1-768x362.png 768w, https:\/\/encaminablogs.wpenginepowered.com\/piensa-en-software-desarrolla-en-colores\/wp-content\/uploads\/sites\/21\/2021\/01\/Imagen-1-610x287.png 610w\" sizes=\"auto, (max-width: 1410px) 100vw, 1410px\" \/><\/p>\n<p><em>Esperamos unos minutillos\u2026(20-30\u2019 no asustarse)<\/em><\/p>\n<ol start=\"2\">\n<li>Esto nos genera la estructura de carpetas y los ficheros necesarios b\u00e1sicos, ahora vamos a proceder a instalar nuestro preprocesador de Sass<\/li>\n<\/ol>\n<p><em>Npm install node-sass sass-loader<\/em><\/p>\n<p><img loading=\"lazy\" decoding=\"async\" class=\"aligncenter size-full wp-image-1263\" src=\"http:\/\/blogs.encamina.com\/piensa-en-software-desarrolla-en-colores\/wp-content\/uploads\/sites\/21\/2021\/01\/Imagen-2.png\" alt=\"\" width=\"1404\" height=\"206\" srcset=\"https:\/\/encaminablogs.wpenginepowered.com\/piensa-en-software-desarrolla-en-colores\/wp-content\/uploads\/sites\/21\/2021\/01\/Imagen-2.png 1404w, https:\/\/encaminablogs.wpenginepowered.com\/piensa-en-software-desarrolla-en-colores\/wp-content\/uploads\/sites\/21\/2021\/01\/Imagen-2-300x44.png 300w, https:\/\/encaminablogs.wpenginepowered.com\/piensa-en-software-desarrolla-en-colores\/wp-content\/uploads\/sites\/21\/2021\/01\/Imagen-2-1024x150.png 1024w, https:\/\/encaminablogs.wpenginepowered.com\/piensa-en-software-desarrolla-en-colores\/wp-content\/uploads\/sites\/21\/2021\/01\/Imagen-2-768x113.png 768w, https:\/\/encaminablogs.wpenginepowered.com\/piensa-en-software-desarrolla-en-colores\/wp-content\/uploads\/sites\/21\/2021\/01\/Imagen-2-610x90.png 610w\" sizes=\"auto, (max-width: 1404px) 100vw, 1404px\" \/><\/p>\n<ol start=\"3\">\n<li>Ahora vamos a instalar un paquete que, a pesar de no ser obligatorio, es muy recomendable, que nos advierte cuando las dependencias se especifican incorrectamente y nos sugiere una soluci\u00f3n.<\/li>\n<\/ol>\n<p><em>npm install eslint-plugin-react-hooks@next<\/em><\/p>\n<p><em> <img loading=\"lazy\" decoding=\"async\" class=\"aligncenter size-full wp-image-1264\" src=\"http:\/\/blogs.encamina.com\/piensa-en-software-desarrolla-en-colores\/wp-content\/uploads\/sites\/21\/2021\/01\/Imagen-3.png\" alt=\"\" width=\"1417\" height=\"171\" srcset=\"https:\/\/encaminablogs.wpenginepowered.com\/piensa-en-software-desarrolla-en-colores\/wp-content\/uploads\/sites\/21\/2021\/01\/Imagen-3.png 1417w, https:\/\/encaminablogs.wpenginepowered.com\/piensa-en-software-desarrolla-en-colores\/wp-content\/uploads\/sites\/21\/2021\/01\/Imagen-3-300x36.png 300w, https:\/\/encaminablogs.wpenginepowered.com\/piensa-en-software-desarrolla-en-colores\/wp-content\/uploads\/sites\/21\/2021\/01\/Imagen-3-1024x124.png 1024w, https:\/\/encaminablogs.wpenginepowered.com\/piensa-en-software-desarrolla-en-colores\/wp-content\/uploads\/sites\/21\/2021\/01\/Imagen-3-768x93.png 768w, https:\/\/encaminablogs.wpenginepowered.com\/piensa-en-software-desarrolla-en-colores\/wp-content\/uploads\/sites\/21\/2021\/01\/Imagen-3-610x74.png 610w\" sizes=\"auto, (max-width: 1417px) 100vw, 1417px\" \/><\/em><\/p>\n<p>Tenemos que a\u00f1adir en el package.json una configuraci\u00f3n para este paquete,<\/p>\n<p>\u00abno-useless-escape\u00bb: \u00ab0\u00bb sirve para apagar la regla de caracteres especiales, asi podemos usarlos tranquilamente en literales de plantilla y expresiones regulares.<\/p>\n<p>Quedar\u00e1 as\u00ed:<\/p>\n<p><img loading=\"lazy\" decoding=\"async\" class=\"aligncenter size-full wp-image-1265\" src=\"http:\/\/blogs.encamina.com\/piensa-en-software-desarrolla-en-colores\/wp-content\/uploads\/sites\/21\/2021\/01\/imagen-4.png\" alt=\"\" width=\"1522\" height=\"723\" srcset=\"https:\/\/encaminablogs.wpenginepowered.com\/piensa-en-software-desarrolla-en-colores\/wp-content\/uploads\/sites\/21\/2021\/01\/imagen-4.png 1522w, https:\/\/encaminablogs.wpenginepowered.com\/piensa-en-software-desarrolla-en-colores\/wp-content\/uploads\/sites\/21\/2021\/01\/imagen-4-300x143.png 300w, https:\/\/encaminablogs.wpenginepowered.com\/piensa-en-software-desarrolla-en-colores\/wp-content\/uploads\/sites\/21\/2021\/01\/imagen-4-1024x486.png 1024w, https:\/\/encaminablogs.wpenginepowered.com\/piensa-en-software-desarrolla-en-colores\/wp-content\/uploads\/sites\/21\/2021\/01\/imagen-4-768x365.png 768w, https:\/\/encaminablogs.wpenginepowered.com\/piensa-en-software-desarrolla-en-colores\/wp-content\/uploads\/sites\/21\/2021\/01\/imagen-4-610x290.png 610w\" sizes=\"auto, (max-width: 1522px) 100vw, 1522px\" \/><\/p>\n<ol start=\"4\">\n<li>Otro factor a tener en cuenta es que si clonamos o copiamos la carpeta de la app en otra ruta funcionara perfectamente solo que deberemos volver a instalar los paquetes de dependencias (Y por supuesto tener NodeJs y Typescript instalado en la m\u00e1quina que corra).<\/li>\n<\/ol>\n<p><em>\u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0Npm install<\/em><\/p>\n<ol start=\"5\">\n<li>Para ejecutar nuestra aplicaci\u00f3n de forma local debemos ejecutar<\/li>\n<\/ol>\n<p><em>\u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 Npm run start o npm start<\/em><\/p>\n<ol start=\"6\">\n<li>Para generar los ficheros de producci\u00f3n<\/li>\n<\/ol>\n<p><em>\u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0Npm run build <\/em><\/p>\n<p>Con esto ya tendr\u00edamos nuestra base para crear cualquier aplicaci\u00f3n con react-hook, y es desplegable en cualquier servidor, ya que al fin y al cabo tenemos nuestra aplicaci\u00f3n en js y css, que es entendible por todos.<\/p>\n<p>Cada componente debe ser generado de manera independiente para respetar su modularidad, su funcionalidad y su flexibilidad, y todos ellos ser integrados en nuestra aplicaci\u00f3n.<\/p>\n<h2>Conclusi\u00f3n<\/h2>\n<p>Hemos podido\u00a0comprobar\u00a0que con React Hooks la\u00a0gesti\u00f3n\u00a0del\u00a0estado\u00a0se simplifica\u00a0enormemente.\u00a0Ahora\u00a0bien, Hooks ofrece otras funcionalidades que no se limitan al\u00a0estado\u00a0en\u00a0sentido\u00a0estricto.\u00a0Adem\u00e1s\u00a0de useState, React ofrece otros\u00a0dos\u00a0hooks b\u00e1sicos: useEffect y useContext.<\/p>\n<p>Tambi\u00e9n mencionaremos el hook useContext, que nos permite\u00a0pasar\u00a0datos a\u00a0trav\u00e9s\u00a0del\u00a0\u00e1rbol\u00a0de componentes\u00a0sin\u00a0tener\u00a0que transmitirlos a\u00a0trav\u00e9s\u00a0de\u00a0cada\u00a0uno\u00a0de los hijos.\u00a0Este\u00a0hook crea un\u00a0estado\u00a0global\u00a0que pueda compartirse entre componentes, lo que puede\u00a0ser\u00a0muy\u00a0\u00fatil\u00a0para tareas de autenticaci\u00f3n,\u00a0uso\u00a0de temas CSS,\u00a0localizaci\u00f3n, etc.<\/p>\n<p>Adem\u00e1s\u00a0de estos hooks b\u00e1sicos, React ofrece otros adicionales como useReducer, useCallback, useMemo o useRef, o\u00a0incluso\u00a0podemos\u00a0definir\u00a0nuestros propios hooks para\u00a0extraer\u00a0l\u00f3gica\u00a0que se use en varios componentes y atenernos al\u00a0principio\u00a0D.R.Y (Don\u2019t Repeat Yourself). No tenemos\u00a0espacio\u00a0para\u00a0hablar\u00a0de\u00a0todo\u00a0ello, pero en la p\u00e1gina\u00a0oficial\u00a0de <a href=\"https:\/\/es.reactjs.org\/docs\/hooks-intro.html\">React<\/a> pod\u00e9is encontrar unas demos muy sencillas.<\/p>\n<p>Los hooks suponen una\u00a0adici\u00f3n\u00a0a lo que\u00a0ya\u00a0exist\u00eda y por lo\u00a0tanto\u00a0no implican el\u00a0fin\u00a0de los componentes de\u00a0clase. Es\u00a0decir, no es\u00a0necesario\u00a0refactorizar\u00a0todo\u00a0un\u00a0proyecto\u00a0hecho\u00a0con clases para pasarlo a componentes funcionales con hooks,\u00a0sino\u00a0que pueden\u00a0coexistir\u00a0ambos, aunque yo recomiendo que para obtener un mayor rendimiento tener una arquitectura de cero pensada para trabajar con los hooks.<\/p>\n<p>En proyectos peque\u00f1os nos pueden\u00a0bastar\u00a0funcionalidades de Hooks como useState, useContext o useReducer para\u00a0gestionar\u00a0adecuadamente el\u00a0estado\u00a0local\u00a0del\u00a0componente. Mientras que para proyectos\u00a0m\u00e1s\u00a0complejos (en lo que respecta al\u00a0estado\u00a0global) podemos\u00a0recurrir\u00a0a funcionalidades propias de Redux y, a la\u00a0vez,\u00a0mantener\u00a0el\u00a0estado\u00a0local\u00a0de componentes\u00a0m\u00e1s\u00a0peque\u00f1os mediante Hooks.<\/p>\n<p>Bueno espero que os haya gustado y que est\u00e9is atentos para cuando saque la segunda parte del art\u00edculo entrando en detalle de c\u00f3mo debemos realizar una buena arquitectura con algunos ejemplos, y ver como integramos estos componentes en nuestra aplicaci\u00f3n base, hoy era solo la toma de contacto y para dejar creada la base que usaremos en futuras ocasiones.<\/p>\n<!-- AddThis Advanced Settings generic via filter on the_content --><!-- AddThis Share Buttons generic via filter on the_content --><span class=\"et_bloom_bottom_trigger\"><\/span>","protected":false},"excerpt":{"rendered":"<p>React est\u00e1 lleno de patrones de dise\u00f1o interesantes, cuando se introdujeron los Hooks, elimin\u00f3 muchos de los problemas que la gente ten\u00eda con las caracter\u00edsticas m\u00e1s frustrantes, como las clases y los m\u00e9todos del ciclo de vida. En este art\u00edculo &hellip; <a href=\"https:\/\/blogs.encamina.com\/piensa-en-software-desarrolla-en-colores\/react-hooks-presente-y-futuro\/\">Continue reading <span class=\"meta-nav\">&rarr;<\/span><\/a><!-- AddThis Advanced Settings generic via filter on get_the_excerpt --><!-- AddThis Share Buttons generic via filter on get_the_excerpt --><\/p>\n","protected":false},"author":192,"featured_media":1269,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[98],"tags":[],"class_list":["post-1261","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","category-reactjs"],"yoast_head":"<!-- This site is optimized with the Yoast SEO Premium plugin v18.2.1 (Yoast SEO v27.3) - https:\/\/yoast.com\/product\/yoast-seo-premium-wordpress\/ -->\n<title>React Hooks, presente y futuro | ENCAMINA<\/title>\n<meta name=\"robots\" content=\"index, follow, max-snippet:-1, max-image-preview:large, max-video-preview:-1\" \/>\n<link rel=\"canonical\" href=\"https:\/\/blogs.encamina.com\/piensa-en-software-desarrolla-en-colores\/react-hooks-presente-y-futuro\/\" \/>\n<meta property=\"og:locale\" content=\"es_ES\" \/>\n<meta property=\"og:type\" content=\"article\" \/>\n<meta property=\"og:title\" content=\"React Hooks, presente y futuro\" \/>\n<meta property=\"og:description\" content=\"React est\u00e1 lleno de patrones de dise\u00f1o interesantes, cuando se introdujeron los Hooks, elimin\u00f3 muchos de los problemas que la gente ten\u00eda con las caracter\u00edsticas m\u00e1s frustrantes, como las clases y los m\u00e9todos del ciclo de vida. En este art\u00edculo &hellip; Continue reading &rarr;\" \/>\n<meta property=\"og:url\" content=\"https:\/\/blogs.encamina.com\/piensa-en-software-desarrolla-en-colores\/react-hooks-presente-y-futuro\/\" \/>\n<meta property=\"og:site_name\" content=\"Piensa en software, desarrolla en colores\" \/>\n<meta property=\"article:published_time\" content=\"2021-01-21T11:58:23+00:00\" \/>\n<meta property=\"article:modified_time\" content=\"2021-02-04T11:10:11+00:00\" \/>\n<meta property=\"og:image\" content=\"https:\/\/blogs.encamina.com\/piensa-en-software-desarrolla-en-colores\/wp-content\/uploads\/sites\/21\/2021\/01\/react-hook.png\" \/>\n\t<meta property=\"og:image:width\" content=\"1580\" \/>\n\t<meta property=\"og:image:height\" content=\"895\" \/>\n\t<meta property=\"og:image:type\" content=\"image\/png\" \/>\n<meta name=\"author\" content=\"Sergio Hierro\" \/>\n<meta name=\"twitter:card\" content=\"summary_large_image\" \/>\n<meta name=\"twitter:label1\" content=\"Escrito por\" \/>\n\t<meta name=\"twitter:data1\" content=\"Sergio Hierro\" \/>\n\t<meta name=\"twitter:label2\" content=\"Tiempo de lectura\" \/>\n\t<meta name=\"twitter:data2\" content=\"9 minutos\" \/>\n<script type=\"application\/ld+json\" class=\"yoast-schema-graph\">{\"@context\":\"https:\\\/\\\/schema.org\",\"@graph\":[{\"@type\":\"Article\",\"@id\":\"https:\\\/\\\/blogs.encamina.com\\\/piensa-en-software-desarrolla-en-colores\\\/react-hooks-presente-y-futuro\\\/#article\",\"isPartOf\":{\"@id\":\"https:\\\/\\\/blogs.encamina.com\\\/piensa-en-software-desarrolla-en-colores\\\/react-hooks-presente-y-futuro\\\/\"},\"author\":{\"name\":\"Sergio Hierro\",\"@id\":\"https:\\\/\\\/blogs.encamina.com\\\/piensa-en-software-desarrolla-en-colores\\\/#\\\/schema\\\/person\\\/207a14395e0709b8e0489e01e874d89d\"},\"headline\":\"React Hooks, presente y futuro\",\"datePublished\":\"2021-01-21T11:58:23+00:00\",\"dateModified\":\"2021-02-04T11:10:11+00:00\",\"mainEntityOfPage\":{\"@id\":\"https:\\\/\\\/blogs.encamina.com\\\/piensa-en-software-desarrolla-en-colores\\\/react-hooks-presente-y-futuro\\\/\"},\"wordCount\":1810,\"commentCount\":0,\"image\":{\"@id\":\"https:\\\/\\\/blogs.encamina.com\\\/piensa-en-software-desarrolla-en-colores\\\/react-hooks-presente-y-futuro\\\/#primaryimage\"},\"thumbnailUrl\":\"https:\\\/\\\/blogs.encamina.com\\\/piensa-en-software-desarrolla-en-colores\\\/wp-content\\\/uploads\\\/sites\\\/21\\\/2021\\\/01\\\/react-hook.png\",\"articleSection\":[\"ReactJS\"],\"inLanguage\":\"es\",\"potentialAction\":[{\"@type\":\"CommentAction\",\"name\":\"Comment\",\"target\":[\"https:\\\/\\\/blogs.encamina.com\\\/piensa-en-software-desarrolla-en-colores\\\/react-hooks-presente-y-futuro\\\/#respond\"]}]},{\"@type\":\"WebPage\",\"@id\":\"https:\\\/\\\/blogs.encamina.com\\\/piensa-en-software-desarrolla-en-colores\\\/react-hooks-presente-y-futuro\\\/\",\"url\":\"https:\\\/\\\/blogs.encamina.com\\\/piensa-en-software-desarrolla-en-colores\\\/react-hooks-presente-y-futuro\\\/\",\"name\":\"React Hooks, presente y futuro | ENCAMINA\",\"isPartOf\":{\"@id\":\"https:\\\/\\\/blogs.encamina.com\\\/piensa-en-software-desarrolla-en-colores\\\/#website\"},\"primaryImageOfPage\":{\"@id\":\"https:\\\/\\\/blogs.encamina.com\\\/piensa-en-software-desarrolla-en-colores\\\/react-hooks-presente-y-futuro\\\/#primaryimage\"},\"image\":{\"@id\":\"https:\\\/\\\/blogs.encamina.com\\\/piensa-en-software-desarrolla-en-colores\\\/react-hooks-presente-y-futuro\\\/#primaryimage\"},\"thumbnailUrl\":\"https:\\\/\\\/blogs.encamina.com\\\/piensa-en-software-desarrolla-en-colores\\\/wp-content\\\/uploads\\\/sites\\\/21\\\/2021\\\/01\\\/react-hook.png\",\"datePublished\":\"2021-01-21T11:58:23+00:00\",\"dateModified\":\"2021-02-04T11:10:11+00:00\",\"author\":{\"@id\":\"https:\\\/\\\/blogs.encamina.com\\\/piensa-en-software-desarrolla-en-colores\\\/#\\\/schema\\\/person\\\/207a14395e0709b8e0489e01e874d89d\"},\"inLanguage\":\"es\",\"potentialAction\":[{\"@type\":\"ReadAction\",\"target\":[\"https:\\\/\\\/blogs.encamina.com\\\/piensa-en-software-desarrolla-en-colores\\\/react-hooks-presente-y-futuro\\\/\"]}]},{\"@type\":\"ImageObject\",\"inLanguage\":\"es\",\"@id\":\"https:\\\/\\\/blogs.encamina.com\\\/piensa-en-software-desarrolla-en-colores\\\/react-hooks-presente-y-futuro\\\/#primaryimage\",\"url\":\"https:\\\/\\\/blogs.encamina.com\\\/piensa-en-software-desarrolla-en-colores\\\/wp-content\\\/uploads\\\/sites\\\/21\\\/2021\\\/01\\\/react-hook.png\",\"contentUrl\":\"https:\\\/\\\/blogs.encamina.com\\\/piensa-en-software-desarrolla-en-colores\\\/wp-content\\\/uploads\\\/sites\\\/21\\\/2021\\\/01\\\/react-hook.png\",\"width\":1580,\"height\":895},{\"@type\":\"WebSite\",\"@id\":\"https:\\\/\\\/blogs.encamina.com\\\/piensa-en-software-desarrolla-en-colores\\\/#website\",\"url\":\"https:\\\/\\\/blogs.encamina.com\\\/piensa-en-software-desarrolla-en-colores\\\/\",\"name\":\"Piensa en software, desarrolla en colores\",\"description\":\"Las ventajas que te ofrece Microsoft Azure y el mundo.NET\",\"potentialAction\":[{\"@type\":\"SearchAction\",\"target\":{\"@type\":\"EntryPoint\",\"urlTemplate\":\"https:\\\/\\\/blogs.encamina.com\\\/piensa-en-software-desarrolla-en-colores\\\/?s={search_term_string}\"},\"query-input\":{\"@type\":\"PropertyValueSpecification\",\"valueRequired\":true,\"valueName\":\"search_term_string\"}}],\"inLanguage\":\"es\"},{\"@type\":\"Person\",\"@id\":\"https:\\\/\\\/blogs.encamina.com\\\/piensa-en-software-desarrolla-en-colores\\\/#\\\/schema\\\/person\\\/207a14395e0709b8e0489e01e874d89d\",\"name\":\"Sergio Hierro\",\"image\":{\"@type\":\"ImageObject\",\"inLanguage\":\"es\",\"@id\":\"https:\\\/\\\/secure.gravatar.com\\\/avatar\\\/3db2ae1389bc05191aafca52e0e6078678a5a929cbb9a5dd845a6afd2dc8b304?s=96&d=mm&r=g\",\"url\":\"https:\\\/\\\/secure.gravatar.com\\\/avatar\\\/3db2ae1389bc05191aafca52e0e6078678a5a929cbb9a5dd845a6afd2dc8b304?s=96&d=mm&r=g\",\"contentUrl\":\"https:\\\/\\\/secure.gravatar.com\\\/avatar\\\/3db2ae1389bc05191aafca52e0e6078678a5a929cbb9a5dd845a6afd2dc8b304?s=96&d=mm&r=g\",\"caption\":\"Sergio Hierro\"},\"description\":\"Soy una persona con gran vocaci\u00f3n por encontrar soluciones tecnol\u00f3gicas, con una actitud fresca, colaborativa, optimista y comprometida. En mi actual puesto como Cloud Solutions Developer en ENCAMINA, disfruto aportando todo el conocimiento que tengo sobre tecnolog\u00eda para ayudar a los clientes a mejorar sus procesos. No me pierdo ni un evento de comunidad, y colaboro con ella escribiendo art\u00edculos y dando charlas, cuando me dejan :)\",\"url\":\"https:\\\/\\\/blogs.encamina.com\\\/piensa-en-software-desarrolla-en-colores\\\/author\\\/shierro\\\/\"}]}<\/script>\n<!-- \/ Yoast SEO Premium plugin. -->","yoast_head_json":{"title":"React Hooks, presente y futuro | ENCAMINA","robots":{"index":"index","follow":"follow","max-snippet":"max-snippet:-1","max-image-preview":"max-image-preview:large","max-video-preview":"max-video-preview:-1"},"canonical":"https:\/\/blogs.encamina.com\/piensa-en-software-desarrolla-en-colores\/react-hooks-presente-y-futuro\/","og_locale":"es_ES","og_type":"article","og_title":"React Hooks, presente y futuro","og_description":"React est\u00e1 lleno de patrones de dise\u00f1o interesantes, cuando se introdujeron los Hooks, elimin\u00f3 muchos de los problemas que la gente ten\u00eda con las caracter\u00edsticas m\u00e1s frustrantes, como las clases y los m\u00e9todos del ciclo de vida. En este art\u00edculo &hellip; Continue reading &rarr;","og_url":"https:\/\/blogs.encamina.com\/piensa-en-software-desarrolla-en-colores\/react-hooks-presente-y-futuro\/","og_site_name":"Piensa en software, desarrolla en colores","article_published_time":"2021-01-21T11:58:23+00:00","article_modified_time":"2021-02-04T11:10:11+00:00","og_image":[{"width":1580,"height":895,"url":"https:\/\/blogs.encamina.com\/piensa-en-software-desarrolla-en-colores\/wp-content\/uploads\/sites\/21\/2021\/01\/react-hook.png","type":"image\/png"}],"author":"Sergio Hierro","twitter_card":"summary_large_image","twitter_misc":{"Escrito por":"Sergio Hierro","Tiempo de lectura":"9 minutos"},"schema":{"@context":"https:\/\/schema.org","@graph":[{"@type":"Article","@id":"https:\/\/blogs.encamina.com\/piensa-en-software-desarrolla-en-colores\/react-hooks-presente-y-futuro\/#article","isPartOf":{"@id":"https:\/\/blogs.encamina.com\/piensa-en-software-desarrolla-en-colores\/react-hooks-presente-y-futuro\/"},"author":{"name":"Sergio Hierro","@id":"https:\/\/blogs.encamina.com\/piensa-en-software-desarrolla-en-colores\/#\/schema\/person\/207a14395e0709b8e0489e01e874d89d"},"headline":"React Hooks, presente y futuro","datePublished":"2021-01-21T11:58:23+00:00","dateModified":"2021-02-04T11:10:11+00:00","mainEntityOfPage":{"@id":"https:\/\/blogs.encamina.com\/piensa-en-software-desarrolla-en-colores\/react-hooks-presente-y-futuro\/"},"wordCount":1810,"commentCount":0,"image":{"@id":"https:\/\/blogs.encamina.com\/piensa-en-software-desarrolla-en-colores\/react-hooks-presente-y-futuro\/#primaryimage"},"thumbnailUrl":"https:\/\/blogs.encamina.com\/piensa-en-software-desarrolla-en-colores\/wp-content\/uploads\/sites\/21\/2021\/01\/react-hook.png","articleSection":["ReactJS"],"inLanguage":"es","potentialAction":[{"@type":"CommentAction","name":"Comment","target":["https:\/\/blogs.encamina.com\/piensa-en-software-desarrolla-en-colores\/react-hooks-presente-y-futuro\/#respond"]}]},{"@type":"WebPage","@id":"https:\/\/blogs.encamina.com\/piensa-en-software-desarrolla-en-colores\/react-hooks-presente-y-futuro\/","url":"https:\/\/blogs.encamina.com\/piensa-en-software-desarrolla-en-colores\/react-hooks-presente-y-futuro\/","name":"React Hooks, presente y futuro | ENCAMINA","isPartOf":{"@id":"https:\/\/blogs.encamina.com\/piensa-en-software-desarrolla-en-colores\/#website"},"primaryImageOfPage":{"@id":"https:\/\/blogs.encamina.com\/piensa-en-software-desarrolla-en-colores\/react-hooks-presente-y-futuro\/#primaryimage"},"image":{"@id":"https:\/\/blogs.encamina.com\/piensa-en-software-desarrolla-en-colores\/react-hooks-presente-y-futuro\/#primaryimage"},"thumbnailUrl":"https:\/\/blogs.encamina.com\/piensa-en-software-desarrolla-en-colores\/wp-content\/uploads\/sites\/21\/2021\/01\/react-hook.png","datePublished":"2021-01-21T11:58:23+00:00","dateModified":"2021-02-04T11:10:11+00:00","author":{"@id":"https:\/\/blogs.encamina.com\/piensa-en-software-desarrolla-en-colores\/#\/schema\/person\/207a14395e0709b8e0489e01e874d89d"},"inLanguage":"es","potentialAction":[{"@type":"ReadAction","target":["https:\/\/blogs.encamina.com\/piensa-en-software-desarrolla-en-colores\/react-hooks-presente-y-futuro\/"]}]},{"@type":"ImageObject","inLanguage":"es","@id":"https:\/\/blogs.encamina.com\/piensa-en-software-desarrolla-en-colores\/react-hooks-presente-y-futuro\/#primaryimage","url":"https:\/\/blogs.encamina.com\/piensa-en-software-desarrolla-en-colores\/wp-content\/uploads\/sites\/21\/2021\/01\/react-hook.png","contentUrl":"https:\/\/blogs.encamina.com\/piensa-en-software-desarrolla-en-colores\/wp-content\/uploads\/sites\/21\/2021\/01\/react-hook.png","width":1580,"height":895},{"@type":"WebSite","@id":"https:\/\/blogs.encamina.com\/piensa-en-software-desarrolla-en-colores\/#website","url":"https:\/\/blogs.encamina.com\/piensa-en-software-desarrolla-en-colores\/","name":"Piensa en software, desarrolla en colores","description":"Las ventajas que te ofrece Microsoft Azure y el mundo.NET","potentialAction":[{"@type":"SearchAction","target":{"@type":"EntryPoint","urlTemplate":"https:\/\/blogs.encamina.com\/piensa-en-software-desarrolla-en-colores\/?s={search_term_string}"},"query-input":{"@type":"PropertyValueSpecification","valueRequired":true,"valueName":"search_term_string"}}],"inLanguage":"es"},{"@type":"Person","@id":"https:\/\/blogs.encamina.com\/piensa-en-software-desarrolla-en-colores\/#\/schema\/person\/207a14395e0709b8e0489e01e874d89d","name":"Sergio Hierro","image":{"@type":"ImageObject","inLanguage":"es","@id":"https:\/\/secure.gravatar.com\/avatar\/3db2ae1389bc05191aafca52e0e6078678a5a929cbb9a5dd845a6afd2dc8b304?s=96&d=mm&r=g","url":"https:\/\/secure.gravatar.com\/avatar\/3db2ae1389bc05191aafca52e0e6078678a5a929cbb9a5dd845a6afd2dc8b304?s=96&d=mm&r=g","contentUrl":"https:\/\/secure.gravatar.com\/avatar\/3db2ae1389bc05191aafca52e0e6078678a5a929cbb9a5dd845a6afd2dc8b304?s=96&d=mm&r=g","caption":"Sergio Hierro"},"description":"Soy una persona con gran vocaci\u00f3n por encontrar soluciones tecnol\u00f3gicas, con una actitud fresca, colaborativa, optimista y comprometida. En mi actual puesto como Cloud Solutions Developer en ENCAMINA, disfruto aportando todo el conocimiento que tengo sobre tecnolog\u00eda para ayudar a los clientes a mejorar sus procesos. No me pierdo ni un evento de comunidad, y colaboro con ella escribiendo art\u00edculos y dando charlas, cuando me dejan :)","url":"https:\/\/blogs.encamina.com\/piensa-en-software-desarrolla-en-colores\/author\/shierro\/"}]}},"_links":{"self":[{"href":"https:\/\/blogs.encamina.com\/piensa-en-software-desarrolla-en-colores\/wp-json\/wp\/v2\/posts\/1261","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/blogs.encamina.com\/piensa-en-software-desarrolla-en-colores\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/blogs.encamina.com\/piensa-en-software-desarrolla-en-colores\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/blogs.encamina.com\/piensa-en-software-desarrolla-en-colores\/wp-json\/wp\/v2\/users\/192"}],"replies":[{"embeddable":true,"href":"https:\/\/blogs.encamina.com\/piensa-en-software-desarrolla-en-colores\/wp-json\/wp\/v2\/comments?post=1261"}],"version-history":[{"count":0,"href":"https:\/\/blogs.encamina.com\/piensa-en-software-desarrolla-en-colores\/wp-json\/wp\/v2\/posts\/1261\/revisions"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/blogs.encamina.com\/piensa-en-software-desarrolla-en-colores\/wp-json\/wp\/v2\/media\/1269"}],"wp:attachment":[{"href":"https:\/\/blogs.encamina.com\/piensa-en-software-desarrolla-en-colores\/wp-json\/wp\/v2\/media?parent=1261"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/blogs.encamina.com\/piensa-en-software-desarrolla-en-colores\/wp-json\/wp\/v2\/categories?post=1261"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/blogs.encamina.com\/piensa-en-software-desarrolla-en-colores\/wp-json\/wp\/v2\/tags?post=1261"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}