<?xml version="1.0" encoding="utf-8" standalone="yes"?><rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom"><channel><title>React on Commentary of Takao</title><link>https://takao.blog/es/categories/react/</link><description>Recent content in React on Commentary of Takao</description><generator>Hugo -- gohugo.io</generator><language>es</language><copyright>Commentary of Takao</copyright><lastBuildDate>Sun, 12 Jul 2026 04:12:51 +0900</lastBuildDate><atom:link href="https://takao.blog/es/categories/react/index.xml" rel="self" type="application/rss+xml"/><item><title>Error Boundaries y logging en frontend</title><link>https://takao.blog/es/web/frontend-error-boundaries-logging/</link><pubDate>Tue, 20 Jan 2026 00:00:00 +0900</pubDate><guid>https://takao.blog/es/web/frontend-error-boundaries-logging/</guid><description>&lt;img src="https://takao.blog/img/thumbnail/frontend-error-boundaries-logging-es.png" alt="Featured image of post Error Boundaries y logging en frontend" /&gt;&lt;p&gt;Error Boundaries en React capturan errores de renderizado para mostrar una UI de fallback. Combinados con logging, permiten monitorear errores en producción.&lt;/p&gt;
&lt;h2 id="error-boundaries-en-react"&gt;Error Boundaries en React
&lt;/h2&gt;&lt;p&gt;Componentes que capturan errores en su subárbol con &lt;code&gt;componentDidCatch()&lt;/code&gt; o &lt;code&gt;static getDerivedStateFromError()&lt;/code&gt;. Reemplazan try/catch para errores de renderizado.&lt;/p&gt;
&lt;h2 id="logging-de-errores"&gt;Logging de errores
&lt;/h2&gt;&lt;p&gt;Captura errores en Error Boundaries y envíalos a un servicio: Sentry, LogRocket, Datadog. Incluye stack trace, props, y contexto del usuario.&lt;/p&gt;
&lt;h2 id="windowonerror-y-unhandledrejection"&gt;window.onerror y unhandledrejection
&lt;/h2&gt;&lt;p&gt;Captura errores no manejados globalmente. &lt;code&gt;window.onerror&lt;/code&gt; para errores síncronos. &lt;code&gt;unhandledrejection&lt;/code&gt; para promesas rechazadas.&lt;/p&gt;</description></item><item><title>React Compiler: Di adiós a la memoización manual</title><link>https://takao.blog/es/web/react-compiler-automated-memoization/</link><pubDate>Sat, 10 Jan 2026 00:00:00 +0900</pubDate><guid>https://takao.blog/es/web/react-compiler-automated-memoization/</guid><description>&lt;img src="https://takao.blog/img/thumbnail/react-compiler-automated-memoization-es.png" alt="Featured image of post React Compiler: Di adiós a la memoización manual" /&gt;&lt;h2 id="introducción"&gt;Introducción
&lt;/h2&gt;&lt;p&gt;El React Compiler (antes React Forget) es una herramienta de compilación que memoiza automáticamente componentes, hooks y valores de React analizando dependencias reactivas en tiempo de compilación.&lt;/p&gt;
&lt;h2 id="el-problema-de-la-memoización-manual"&gt;El problema de la memoización manual
&lt;/h2&gt;&lt;p&gt;&lt;code&gt;useMemo&lt;/code&gt;, &lt;code&gt;useCallback&lt;/code&gt;, &lt;code&gt;React.memo&lt;/code&gt; son verbosos, propensos a errores y fáciles de olvidar. Un &lt;code&gt;useMemo&lt;/code&gt; faltante causa re-renderizados innecesarios; un array de dependencias incorrecto causa closures obsoletas.&lt;/p&gt;
&lt;h2 id="cómo-funciona"&gt;Cómo funciona
&lt;/h2&gt;&lt;ol&gt;
&lt;li&gt;Detección de valores reactivos (AST). 2. Construcción de grafo de dependencias. 3. Generación de código optimizado con caché integrada.&lt;/li&gt;
&lt;/ol&gt;
&lt;h2 id="lo-que-puedes-eliminar"&gt;Lo que puedes eliminar
&lt;/h2&gt;&lt;p&gt;Con el React Compiler activado ya no necesitas: &lt;code&gt;useMemo()&lt;/code&gt;, &lt;code&gt;useCallback()&lt;/code&gt;, &lt;code&gt;React.memo()&lt;/code&gt;, ni arrays de dependencias manuales.&lt;/p&gt;</description></item><item><title>Reglas para crear hooks personalizados en React</title><link>https://takao.blog/es/web/react-custom-hooks-rules/</link><pubDate>Sun, 10 Aug 2025 00:00:00 +0900</pubDate><guid>https://takao.blog/es/web/react-custom-hooks-rules/</guid><description>&lt;img src="https://takao.blog/img/thumbnail/react-custom-hooks-rules-es.png" alt="Featured image of post Reglas para crear hooks personalizados en React" /&gt;&lt;p&gt;Los hooks personalizados son la forma principal de extraer lógica con estado en React. Deben seguir las mismas reglas que los hooks integrados.&lt;/p&gt;
&lt;h2 id="reglas-fundamentales"&gt;Reglas fundamentales
&lt;/h2&gt;&lt;ol&gt;
&lt;li&gt;Solo llama hooks en el nivel superior (no en condicionales, bucles o funciones anidadas).&lt;/li&gt;
&lt;li&gt;Solo llama hooks desde componentes React o desde otros hooks.&lt;/li&gt;
&lt;/ol&gt;
&lt;h2 id="patrones-de-hooks-personalizados"&gt;Patrones de hooks personalizados
&lt;/h2&gt;&lt;p&gt;Un hook debe comenzar con &lt;code&gt;use&lt;/code&gt;. Debe devolver un objeto o array con valores y funciones. La lógica de efecto debe limpiarse en el cleanup.&lt;/p&gt;</description></item><item><title>useMemo y useCallback: Optimización de rendimiento en React</title><link>https://takao.blog/es/web/react-hooks-usememo-usecallback/</link><pubDate>Fri, 20 Jun 2025 00:00:00 +0900</pubDate><guid>https://takao.blog/es/web/react-hooks-usememo-usecallback/</guid><description>&lt;img src="https://takao.blog/img/thumbnail/react-hooks-usememo-usecallback-es.png" alt="Featured image of post useMemo y useCallback: Optimización de rendimiento en React" /&gt;&lt;p&gt;&lt;code&gt;useMemo&lt;/code&gt; memoiza valores calculados, &lt;code&gt;useCallback&lt;/code&gt; memoiza funciones. Ambos evitan trabajo innecesario en re-renderizados.&lt;/p&gt;
&lt;h2 id="usememo"&gt;useMemo
&lt;/h2&gt;&lt;p&gt;Solo recalcula el valor cuando cambian sus dependencias. Útil para cálculos costosos o para mantener referencias estables entre renderizados.&lt;/p&gt;
&lt;div class="highlight"&gt;&lt;pre tabindex="0" style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;-webkit-text-size-adjust:none;"&gt;&lt;code class="language-jsx" data-lang="jsx"&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#66d9ef"&gt;const&lt;/span&gt; &lt;span style="color:#a6e22e"&gt;sorted&lt;/span&gt; &lt;span style="color:#f92672"&gt;=&lt;/span&gt; &lt;span style="color:#a6e22e"&gt;useMemo&lt;/span&gt;(() =&amp;gt; &lt;span style="color:#a6e22e"&gt;items&lt;/span&gt;.&lt;span style="color:#a6e22e"&gt;sort&lt;/span&gt;(), [&lt;span style="color:#a6e22e"&gt;items&lt;/span&gt;]);
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;h2 id="usecallback"&gt;useCallback
&lt;/h2&gt;&lt;p&gt;Devuelve la misma función a menos que cambien las dependencias. Esencial para pasar callbacks a componentes hijos memoizados.&lt;/p&gt;
&lt;div class="highlight"&gt;&lt;pre tabindex="0" style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;-webkit-text-size-adjust:none;"&gt;&lt;code class="language-jsx" data-lang="jsx"&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#66d9ef"&gt;const&lt;/span&gt; &lt;span style="color:#a6e22e"&gt;handleClick&lt;/span&gt; &lt;span style="color:#f92672"&gt;=&lt;/span&gt; &lt;span style="color:#a6e22e"&gt;useCallback&lt;/span&gt;(() =&amp;gt; &lt;span style="color:#a6e22e"&gt;doSomething&lt;/span&gt;(&lt;span style="color:#a6e22e"&gt;id&lt;/span&gt;), [&lt;span style="color:#a6e22e"&gt;id&lt;/span&gt;]);
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;h2 id="cuándo-usarlos"&gt;Cuándo usarlos
&lt;/h2&gt;&lt;p&gt;No optimices prematuramente. Solo usa estos hooks cuando perfiles muestren un problema real. Con el React Compiler, estos hooks serán innecesarios.&lt;/p&gt;</description></item><item><title>Lanzamiento oficial de React 19 y guía de funcionalidades prácticas</title><link>https://takao.blog/es/web/react-19-new-features-practical/</link><pubDate>Wed, 05 Mar 2025 00:00:00 +0900</pubDate><guid>https://takao.blog/es/web/react-19-new-features-practical/</guid><description>&lt;img src="https://takao.blog/img/thumbnail/react-19-new-features-practical-es.png" alt="Featured image of post Lanzamiento oficial de React 19 y guía de funcionalidades prácticas" /&gt;&lt;h2 id="introducción"&gt;Introducción
&lt;/h2&gt;&lt;p&gt;React 19 representa un cambio de paradigma importante. Funciones antes restringidas a meta-frameworks como Next.js ahora están integradas en el núcleo estable de React.&lt;/p&gt;
&lt;h2 id="actions-api-y-useactionstate"&gt;Actions API y useActionState
&lt;/h2&gt;&lt;p&gt;Simplifica la gestión de mutaciones asíncronas. &lt;code&gt;useActionState&lt;/code&gt; enlaza manejadores asíncronos directamente a atributos de formulario nativos, manejando automáticamente indicadores de carga.&lt;/p&gt;
&lt;h2 id="useoptimistic"&gt;useOptimistic
&lt;/h2&gt;&lt;p&gt;Para acciones interactivas como &amp;ldquo;me gusta&amp;rdquo; o envío de chats. Actualiza la IU instantáneamente antes de que la solicitud al servidor se complete, con capacidad de rollback integrada.&lt;/p&gt;</description></item><item><title>React Concurrent: Guía de renderizado concurrente</title><link>https://takao.blog/es/web/react-concurrent/</link><pubDate>Fri, 06 Dec 2024 00:00:00 +0900</pubDate><guid>https://takao.blog/es/web/react-concurrent/</guid><description>&lt;img src="https://takao.blog/img/thumbnail/react-concurrent-es.png" alt="Featured image of post React Concurrent: Guía de renderizado concurrente" /&gt;&lt;p&gt;El renderizado concurrente de React permite que React interrumpa el trabajo de renderizado para manejar eventos de mayor prioridad. Con React 18+, &lt;code&gt;startTransition&lt;/code&gt; y &lt;code&gt;useDeferredValue&lt;/code&gt; permiten actualizaciones no urgentes sin bloquear la UI.&lt;/p&gt;
&lt;h2 id="starttransition"&gt;startTransition
&lt;/h2&gt;&lt;p&gt;Marca una actualización de estado como transición. React puede interrumpirla para manejar eventos urgentes como entrada de teclado.&lt;/p&gt;
&lt;div class="highlight"&gt;&lt;pre tabindex="0" style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;-webkit-text-size-adjust:none;"&gt;&lt;code class="language-jsx" data-lang="jsx"&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#a6e22e"&gt;startTransition&lt;/span&gt;(() =&amp;gt; { &lt;span style="color:#a6e22e"&gt;setSearchQuery&lt;/span&gt;(&lt;span style="color:#a6e22e"&gt;input&lt;/span&gt;); });
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;h2 id="usedeferredvalue"&gt;useDeferredValue
&lt;/h2&gt;&lt;p&gt;Aplaza un valor para que React pueda mostrar contenido antiguo mientras carga el nuevo. Útil para búsquedas en listas grandes.&lt;/p&gt;</description></item><item><title>Patrones de Portal en React: Renderizado fuera del árbol padre</title><link>https://takao.blog/es/web/react-portal-patterns/</link><pubDate>Tue, 03 Sep 2024 00:00:00 +0900</pubDate><guid>https://takao.blog/es/web/react-portal-patterns/</guid><description>&lt;img src="https://takao.blog/img/thumbnail/react-portal-patterns-es.png" alt="Featured image of post Patrones de Portal en React: Renderizado fuera del árbol padre" /&gt;&lt;p&gt;ReactDOM.createPortal renderiza un componente fuera del árbol DOM del padre, útil para modales, tooltips y dropdowns que necesitan evitar overflow: hidden o z-index del padre.&lt;/p&gt;
&lt;h2 id="uso-básico"&gt;Uso básico
&lt;/h2&gt;&lt;div class="highlight"&gt;&lt;pre tabindex="0" style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;-webkit-text-size-adjust:none;"&gt;&lt;code class="language-jsx" data-lang="jsx"&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#a6e22e"&gt;createPortal&lt;/span&gt;(&lt;span style="color:#a6e22e"&gt;children&lt;/span&gt;, &lt;span style="color:#a6e22e"&gt;domNode&lt;/span&gt;)
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;El portal se renderiza en &lt;code&gt;domNode&lt;/code&gt; pero conserva el contexto React (props, estado, context API).&lt;/p&gt;
&lt;h2 id="casos-de-uso-comunes"&gt;Casos de uso comunes
&lt;/h2&gt;&lt;p&gt;Modales, notificaciones toast, tooltips, menús contextuales, paneles laterales. Todos necesitan salir del flujo de layout del padre.&lt;/p&gt;
&lt;h2 id="accesibilidad"&gt;Accesibilidad
&lt;/h2&gt;&lt;p&gt;Los portales deben manejar el foco correctamente: atrapar foco dentro del modal, cerrar con Escape, restaurar foco al cerrar. Combinar con la Popover API nativa cuando sea posible.&lt;/p&gt;</description></item><item><title>Gestión de estado en React 2024: Context, Zustand, Jotai y más</title><link>https://takao.blog/es/web/react-state-management-2024/</link><pubDate>Tue, 19 Mar 2024 00:00:00 +0900</pubDate><guid>https://takao.blog/es/web/react-state-management-2024/</guid><description>&lt;img src="https://takao.blog/img/thumbnail/react-state-management-2024-es.png" alt="Featured image of post Gestión de estado en React 2024: Context, Zustand, Jotai y más" /&gt;&lt;p&gt;La gestión de estado en React ha evolucionado. Además de useState/useReducer, existen soluciones para estado global, servidor y URL.&lt;/p&gt;
&lt;h2 id="estado-local-usestate-y-usereducer"&gt;Estado local: useState y useReducer
&lt;/h2&gt;&lt;p&gt;useState para estado simple. useReducer para lógica compleja con múltiples transiciones de estado. Para la mayoría de componentes, useState es suficiente.&lt;/p&gt;
&lt;h2 id="estado-global-context-api"&gt;Estado global: Context API
&lt;/h2&gt;&lt;p&gt;React.createContext + useContext permite estado compartido sin prop drilling. Limitado a árbol de componentes. No ideal para estado que cambia frecuentemente (causa re-renderizados masivos).&lt;/p&gt;</description></item><item><title>React Server Components: El futuro del renderizado web</title><link>https://takao.blog/es/web/react-server-components/</link><pubDate>Mon, 08 Jan 2024 00:00:00 +0900</pubDate><guid>https://takao.blog/es/web/react-server-components/</guid><description>&lt;img src="https://takao.blog/img/thumbnail/react-server-components-es.png" alt="Featured image of post React Server Components: El futuro del renderizado web" /&gt;&lt;p&gt;React Server Components (RSC) representan un cambio de paradigma. Los componentes se ejecutan exclusivamente en el servidor, enviando cero JavaScript al cliente. A diferencia del SSR tradicional, RSC produce un formato serializado especial (payload RSC) que el reconcilidor de React en el cliente usa para reconstruir el árbol de componentes sin ejecutar el código.&lt;/p&gt;
&lt;h2 id="límites-servidorcliente"&gt;Límites servidor/cliente
&lt;/h2&gt;&lt;p&gt;Las directivas &amp;ldquo;use client&amp;rdquo; y &amp;ldquo;use server&amp;rdquo; definen el límite. Componentes sin directiva son server components por defecto. Los server components no pueden usar estado, efectos o APIs del navegador.&lt;/p&gt;</description></item></channel></rss>