¿Qué hay de nuevo en Redux Toolkit 2.0?

Rate this content
Bookmark

¡Redux Toolkit 2.0 está aquí! Descubre qué ha cambiado y por qué, el trabajo que se ha invertido en reempaquetar las bibliotecas de Redux, una visión general de las nuevas características y los cambios significativos, y un vistazo a los planes futuros.

FAQ

Redux Toolkit 2.0 es la última versión de Redux Toolkit, una herramienta diseñada para simplificar la escritura de lógica de Redux en aplicaciones. Incluye mejoras en la sintaxis, compatibilidad de módulos, nuevas funciones y la eliminación de APIs obsoletas.

Redux Toolkit 2.0 introduce funciones como 'combineSlices' para cargar perezosamente reductores, la posibilidad de definir selectores y thunks dentro de 'createSlice', y la inclusión de la última versión de la biblioteca EMER, mejorando el rendimiento y reduciendo el tamaño del paquete.

Durante el lanzamiento de Redux Toolkit 2.0 se encontraron varios problemas de compatibilidad y errores, incluyendo problemas con React Redux en React Native. Estos fueron abordados con parches de lanzamiento inmediatos para resolver los problemas.

La compatibilidad entre los módulos ES y CommonJS fue especialmente difícil de lograr debido a diferencias en las configuraciones de construcción y la interpretación de exportaciones por parte de varias herramientas, lo que requirió múltiples iteraciones y ajustes.

En la mayoría de los casos, la actualización a Redux Toolkit 2.0 debería ser sencilla. Se han preparado documentos sobre los pasos de migración y se espera que los cambios no sean demasiado disruptivos para la mayoría de los usuarios.

Los cambios y mejoras en RTKQuery se han aplazado para después de la versión 2.0 de Redux Toolkit. Se está considerando su inclusión en futuras versiones, posiblemente en la versión 3.0, después de una evaluación cuidadosa de nuevas características.

Redux Toolkit 2.0 no está orientado a ser compatible con Internet Explorer 11. Los usuarios que necesiten soporte para IE11 deberán realizar sus propias compilaciones para adaptar el código a este navegador.

Redux Toolkit 2.0 incluye nuevos documentos y recursos que guían sobre cómo usar Redux con Next.js, disponibles en la página oficial de documentación de Redux Toolkit.

Mark Erikson
Mark Erikson
8 min
08 Dec, 2023

Comments

Sign in or register to post your comment.

Video Summary and Transcription

Mark Erickson discute las nuevas características en Redux Toolkit 2.0, incluyendo la simplificación de la lógica de Redux y la adición de RTK query para la obtención de datos. Menciona los desafíos de lograr la compatibilidad ESM common JS y se refiere a una entrada de blog que escribió al respecto. Se discute el plan para lanzar las versiones principales de RTK, Redux core, Reselect, y React Redux juntas, con un enfoque en la conversión de Redux core a TypeScript y la necesidad de actualizaciones de empaquetado y mejoras de tipo TypeScript.

Available in English: What's New in Redux Toolkit 2.0

1. Introducción a Redux Toolkit 2.0

Short description:

Mi nombre es Mark Erickson y estoy emocionado de hablar sobre lo nuevo en Redux Toolkit 2.0. Redux Toolkit simplifica la lógica de Redux e incluye RTK query para la obtención de datos. Lanzamos RTK 1.0 en 2019 y ahora estamos trabajando en RTK 2.0, que tiene como objetivo mejorar la compatibilidad y agregar nuevas funciones. Sin embargo, la compatibilidad ESM common JS ha sido un desafío y he escrito una entrada de blog al respecto.

Muy bien, buenas tardes. Mi nombre es Mark Erickson, y hoy estoy muy emocionado de hablarles sobre lo nuevo en Redux Toolkit 2.0.

Un par de cosas rápidas sobre mí. Soy un ingeniero senior de front-end en Replay, donde estamos construyendo un verdadero depurador de viaje en el tiempo para JavaScript. Tenemos un stand allí en el vestíbulo. Si aún no lo has visto, por favor pasa. Nos encantaría mostrarte cuánto más fácil hace la depuración de aplicaciones.

Responderé preguntas en cualquier lugar donde haya un cuadro de texto en internet. Recojo todo tipo de enlaces interesantes. Escribo entradas de blog ridículamente largas. Soy un mantenedor de Redux, pero la mayoría de la gente me conoce como ese tipo con el avatar de Los Simpson. Lo sé. A veces llevo una etiqueta con mi nombre para que la gente me reconozca.

Redux Toolkit es la forma estándar de escribir lógica de Redux hoy en día. Proporciona métodos para simplificar los patrones estándar de Redux, como la creación de tiendas, la escritura de reductores, funciones e incluso la obtención de datos. Incluye una sub-pieza llamada RTK query, que está específicamente diseñada para simplificar la obtención de datos en las aplicaciones de Redux, y se envuelve alrededor de las APIs centrales de Redux.

Lanzamos RTK 1.0 en octubre de 2019, lo que si lo piensas significa que ha estado alrededor la mitad de tiempo que la biblioteca original de Redux, y sin embargo, muchas personas no saben de ella. La última versión ha sido RTK 1.9. Lanzamos 1.9 hace un año. El último lanzamiento de parche fue 1.9.7.

Al comienzo de este año, comenzamos a trabajar para RTK 2.0, y teníamos varios objetivos. El primero es la correcta compatibilidad entre los módulos ES y common JS, lo que eso realmente signifique. Queríamos modernizar los artefactos de construcción de JavaScript para que utilicen una sintaxis moderna, ya no apuntando a IE 11. Queríamos agregar algunas nuevas funciones, eliminar algunas APIs obsoletas y queríamos enviar algunos tipos de TypeScript actualizados junto con el empaquetado.

Ahora, desafortunadamente, resulta que todo este asunto de la compatibilidad ESM common JS es realmente, realmente difícil. Pasé por varias rondas de iteración donde intenté cambiar algunas configuraciones, intenté cambiar alguna configuración de construcción, y varias herramientas no funcionaban correctamente. Resulta que el campo de exportación de paquetes es realmente complejo, pero el problema más grande es que cada herramienta de construcción diferente tiene su propia idea de cómo interpretan estas cosas. Estaba jugando con esto en la sala de conferencias hace una hora. Aún no está terminado. De hecho, terminé escribiendo una entrada de blog muy larga hace unos meses, hablando sobre el dolor y el sufrimiento que he tenido que soportar tratando de hacer que esto funcione.

2. Lanzamiento de Versiones Mayores y Actualizaciones de TypeScript

Short description:

El plan era lanzar versiones mayores de RTK, Redux core, Reselect y React Redux juntos. Redux core se convirtió a TypeScript en 2019 pero nunca se lanzó. Todos los paquetes requieren actualizaciones de empaquetado y algunas actualizaciones de tipos de TypeScript.

Hablé de ello en un par de podcasts también. Ahora, el plan original era simplemente lanzar versiones mayores de RTK y el núcleo de Redux. Luego nos dimos cuenta de que probablemente necesitábamos lanzar versiones mayores de todas las otras bibliotecas como Reselect y React Redux también. El núcleo de Redux en realidad se convirtió a TypeScript en 2019, y luego nunca lo lanzamos porque la versión 4 era lo suficientemente buena y estábamos preocupados por la ruptura. Decidimos que todos estos paquetes necesitan ser enviados, nuevas versiones mayores juntas. Todos necesitan las mismas actualizaciones de empaquetado con un par de variaciones ligeras, y íbamos a intentar hacer un trabajo para actualizar algunos de los tipos de TypeScript y algunas de las exportaciones que estábamos definiendo. Hay una serie de cambios importantes en RTK 2.0. En realidad, esperamos que en la mayoría de los casos sea una actualización sencilla. El más grande que podría afectar a las personas es que teníamos esta sintaxis de objeto en un par de los métodos, createSlice y createReducer, y lo hemos eliminado porque hay una sintaxis de devolución de llamada que proporciona un mejor soporte de TypeScript. De hecho, tenemos un mod de código que automáticamente hará la conversión de código para ti si quieres. La mayoría de los otros cambios importantes en realidad tienen que ver con cosas relacionadas con TypeScript de alguna manera, tratando de hacer que el código sea más seguro, tratando de mejorar algunas de las inferencias y la experiencia para los usuarios finales. Tomé la decisión de eliminar los artefactos de construcción UMD. Mi entendimiento es que en este punto, muy pocas personas están tratando de usar esos, principalmente utilizados para tal vez como un script de código de pluma o algo así. Si alguien tiene una buena razón por la que debería volver a ponerlos, por favor hágamelo saber. También, como dije, modernizamos el JavaScript, por lo que ahora estamos enviando absolutamente moderno JavaScript. Si necesitas apuntar a IE11, lo siento. Y también, por favor haz la compilación tú mismo. Y finalmente, utilizamos una herramienta que en realidad extraerá algunos de los mensajes de error de los artefactos de producción para reducir el tamaño de la construcción. De hecho, hicimos mucho trabajo para tratar de reducir los tamaños de construcción en esta versión. También tenemos una serie de nuevas características. La más grande es algo llamado combineSlices, que se utiliza principalmente para poder cargar perezosamente los reductores en una aplicación de Redux, por lo que puedes hacer un poco de división de código e intentar inyectar cosas más tarde. También ahora tenemos la capacidad de definir algunos selectores dentro de la API de createSlice. Incluso hay una opción para definir thunks dentro de createSlice también. Eso es algo que mucha gente ha pedido a lo largo de los años. Creemos que esperamos que la biblioteca de obtención de datos RTKQuery signifique que no deberías tener que escribir demasiados thunks tú mismo, pero está ahí si lo necesitas. También incluimos la última versión de la biblioteca de actualización inmutable EMER, que tiene un rendimiento significativamente más rápido y un tamaño de paquete más pequeño también. Entonces, hablé de esto hace un mes, y RTK 2.0 estaba en beta. A partir del lunes por la mañana, RTK 2.0 está en vivo. Ahora, el problema es que literalmente presioné el botón en las notas de la versión cuando estaba a punto de irme al aeropuerto, y mientras conducía al aeropuerto, mis compañeros de equipo me estaban diciendo que había informes de errores, uno de los cuales era que React Redux no se importaría con React Native. Terminé arreglando la herramienta de construcción en la puerta del aeropuerto y envié otro parche de lanzamiento sentado en el avión antes de que despegara. Lo peor es que estaba haciendo otra corrección en la sala de conferencias hace una hora. Espero que funcione genial esta vez. Lo grande que nos permitió enviar 2.0 ahora fue que hemos aplazado todos los cambios potenciales a RTKQuery hasta después de 2.0. RTKQuery es popular, mucha gente lo está usando, pero queremos tomarnos nuestro tiempo y ser capaces de pensar a través de qué características queremos agregar y cómo van a funcionar. Así que estamos aplazando ese trabajo hasta el próximo año. Además, me gustaría pasar mis vacaciones sin tener que preocuparme por esto. Así que lo veremos el próximo año, tal vez sea 3.0. Tenemos algunos nuevos documentos para usar Redux con Next.js y una página de documentos sobre los pasos de migración que esperamos que sean bastante simples. Así que si estás usando Redux en absoluto, por favor actualiza a Redux Toolkit 2.0 hoy. Gracias.

Check out more articles and videos

We constantly think of articles and videos that might spark Git people interest / skill us up or help building a stellar career

Todo Más Allá de la Gestión de Estado en Tiendas con Pinia
Vue.js London Live 2021Vue.js London Live 2021
34 min
Todo Más Allá de la Gestión de Estado en Tiendas con Pinia
Top Content
Cuando pensamos en Vuex, Pinia, o tiendas en general, a menudo pensamos en la gestión de estado y los patrones Flux, pero no solo las tiendas no siempre siguen el patrón Flux, ¡hay mucho más en las tiendas que las hace valer la pena usar! Plugins, Devtools, renderizado en el lado del servidor, integraciones TypeScript... Vamos a sumergirnos en todo más allá de la gestión de estado con Pinia con ejemplos prácticos sobre plugins y Devtools para sacar el máximo provecho de tus tiendas.
Uso efectivo de useEffect
React Advanced Conference 2022React Advanced Conference 2022
30 min
Uso efectivo de useEffect
Top Content
¿Puede useEffect afectar negativamente a tu base de código? Desde la obtención de datos hasta la lucha con las APIs imperativas, los efectos secundarios son una de las mayores fuentes de frustración en el desarrollo de aplicaciones web. Y seamos honestos, poner todo en ganchos useEffect no ayuda mucho. En esta charla, desmitificaremos el gancho useEffect y obtendremos una mejor comprensión de cuándo (y cuándo no) usarlo, así como descubriremos cómo los efectos declarativos pueden hacer que la gestión de efectos sea más mantenible incluso en las aplicaciones React más complejas.
React Query: ¡Es hora de romper con tu "Estado Global"!
React Summit Remote Edition 2020React Summit Remote Edition 2020
30 min
React Query: ¡Es hora de romper con tu "Estado Global"!
Top Content
Una cantidad creciente de datos en nuestras aplicaciones React proviene de fuentes remotas y asíncronas y, aún peor, continúa disfrazándose como "estado global". En esta charla, obtendrás información sobre por qué la mayoría de tu "estado global" en realidad no es un estado en absoluto y cómo React Query puede ayudarte a buscar, almacenar en caché y gestionar tus datos asíncronos con una fracción del esfuerzo y el código al que estás acostumbrado.
Los Átomos de Jotai Son Simplemente Funciones
React Day Berlin 2022React Day Berlin 2022
22 min
Los Átomos de Jotai Son Simplemente Funciones
Top Content
Jotai es una biblioteca de gestión de estado. La hemos estado desarrollando principalmente para React, pero conceptualmente no está vinculada a React. En esta charla, veremos cómo funcionan los átomos de Jotai y aprenderemos sobre el modelo mental que deberíamos tener. Los átomos son una abstracción agnóstica del marco para representar estados, y básicamente son solo funciones. Comprender la abstracción de átomo ayudará a diseñar e implementar estados en sus aplicaciones con Jotai
Anunciando Starbeam: Reactividad Universal
JSNation 2022JSNation 2022
27 min
Anunciando Starbeam: Reactividad Universal
Starbeam es una biblioteca para construir sistemas de datos reactivos que se integran nativamente con frameworks de UI como React, Vue, Svelte o Ember. En esta charla, Yehuda anunciará Starbeam. Cubrirá la motivación para la biblioteca, y luego entrará en los detalles de cómo funciona la reactividad en Starbeam, y lo más importante, cómo puedes usarlo para construir bibliotecas reactivas hoy que funcionarán nativamente en cualquier framework de UI. Si eres realmente aventurero, también hablará sobre cómo podrías usar Starbeam en una aplicación existente utilizando el framework de tu elección y hablará sobre los beneficios de usar Starbeam como el sistema de gestión de estado en tu aplicación.
Pensando en React Query
React Summit 2023React Summit 2023
22 min
Pensando en React Query
Top Content
En esta charla, explicaré React Query desde una perspectiva diferente. Después de haber mantenido React Query durante más de dos años y haber respondido muchas preguntas (a menudo las mismas varias veces), siento que podría faltar una comprensión fundamental sobre la librería. Comenzaré con una rápida introducción sobre mi viaje en el mundo de código abierto y cómo llegué a conocer React Query, seguido de mostrar qué cambio de mentalidad es beneficioso cuando se trabaja con React Query - cómo "pensar en React Query".Tendré 3 conclusiones principales:1) React Query no es una biblioteca de obtención de datos. Es un administrador de estado asíncrono, hablaremos rápidamente sobre qué hace a un administrador de estado, por qué React Query es uno y qué significa "estado asíncrono".2) staleTime es tu mejor amigo. He visto un poco de confusión sobre cómo usar React Query como un administrador de estado, así que explicaré por qué configurar staleTime es en su mayoría todo lo que necesitas3) los parámetros son dependencias. Esto es importante para entender para mostrar los límites entre el estado del cliente y el estado del servidor, y es esencial cuando se hace la gestión del estado con React Query. Terminaré con una nota sobre "separación de preocupaciones" y sobre los compromisos de simplemente llamar `useQuery` donde lo necesites en tu árbol de componentes.

Workshops on related topic

Repensando el Estado del Servidor con React Query
React Summit 2020React Summit 2020
96 min
Repensando el Estado del Servidor con React Query
Top Content
Featured Workshop
Tanner Linsley
Tanner Linsley
La distinción entre el estado del servidor y el estado del cliente en nuestras aplicaciones puede ser un concepto nuevo para algunos, pero es muy importante entenderlo cuando se entrega una experiencia de usuario de primera calidad. El estado del servidor viene con problemas únicos que a menudo se cuelan en nuestras aplicaciones sorpresa como:
- Compartir datos entre aplicaciones- Caché y Persistencia- Deduplicación de Solicitudes- Actualizaciones en segundo plano- Gestión de Datos "Obsoletos"- Paginación y Recuperación Incremental- Memoria y Recolección de Basura- Actualizaciones Optimistas
Los gestores tradicionales de "Estado Global" pretenden que estos desafíos no existen y esto finalmente resulta en que los desarrolladores construyan sus propios intentos sobre la marcha para mitigarlos.
En esta masterclass, construiremos una aplicación que expone estos problemas, nos permite entenderlos mejor, y finalmente los convierte de desafíos a características usando una biblioteca diseñada para gestionar el estado del servidor llamada React Query.
Al final de la masterclass, tendrás una mejor comprensión del estado del servidor, el estado del cliente, la sincronización de datos asíncronos (un bocado, lo sé), y React Query.
Gestión del estado en React con Context y Hooks
React Summit Remote Edition 2021React Summit Remote Edition 2021
71 min
Gestión del estado en React con Context y Hooks
WorkshopFree
Roy Derks
Roy Derks
Mucho ha cambiado en el mundo de la gestión del estado en React en los últimos años. Donde Redux solía ser la principal biblioteca para esto, la introducción de las API de Contexto y Hooks de React ha revolucionado las cosas. Ya no necesitas bibliotecas externas para manejar tanto el estado del componente como el estado global en tus aplicaciones. En este masterclass aprenderás los diferentes enfoques para la gestión del estado en la era post-Redux de React, ¡todos basados en Hooks! Y como bonificación, exploraremos dos próximas bibliotecas de gestión del estado en el ecosistema de React.