Redux Moderno con Redux Toolkit

Rate this content
Bookmark

¡Redux Toolkit 2.0 llegará pronto (TM)! Descubre qué está cambiando y por qué, el trabajo que se ha invertido en reempaquetar las bibliotecas Redux, una visión general de las nuevas características y los cambios importantes, y el último estado sobre los planes de lanzamiento.

This talk has been presented at React Summit US 2023, check out the latest edition of this React Conference.

FAQ

Mark Erickson es un ingeniero senior de front-end en Replay y un mantenedor de Redux y creador de Redux Toolkit. Es conocido por su contribución significativa a estas herramientas de desarrollo.

Redux Toolkit fue lanzado originalmente en octubre de 2019. La versión 1.9 se lanzó un año antes de la discusión sobre RTK 2.0, que es la versión en desarrollo mencionada.

Los cambios en RTK 2.0 incluyen la eliminación de una sintaxis de objeto en Create Slice y Create Reducer, mejoras en la type safety para ConfigureStore, eliminación de campos obsoletos, y la sustitución del tipo AnyAction por UnknownAction.

Mark enfrentó desafíos significativos con la compatibilidad de los módulos ES Common JS, lo que le llevó a investigar y ajustar configuraciones, y escribir una publicación de blog detallada sobre las dificultades encontradas.

Redux Toolkit 2.0 introduce una API de Slices combinadas para inyección dinámica de reductores, la capacidad de definir selectores dentro de create slice, y mejoras en el empaquetado y performance con la última versión de Emmer.

Redux es una biblioteca para manejar el estado de las aplicaciones JavaScript, lanzada en 2015. Redux Toolkit, lanzado en 2019, es una herramienta oficial que simplifica la configuración y uso de Redux.

Mark Erickson espera lanzar Redux Toolkit 2.0 a principios de diciembre, con el objetivo de resolver los problemas pendientes y recibir feedback sobre las versiones beta actuales antes de la versión final.

Se recomienda a los desarrolladores que prueben las versiones beta de RTK 2.0 y React Redux versión 9, y que proporcionen feedback sobre el proceso de actualización y cualquier problema que encuentren.

Mark Erikson
Mark Erikson
7 min
13 Nov, 2023

Comments

Sign in or register to post your comment.

Video Summary and Transcription

Mark Erickson discute los cambios y desafíos en Redux Toolkit 2.0, incluyendo la dirección de la compatibilidad de ES Module Common JS y el envío de nuevas características. El lanzamiento incluye una salida de construcción modernizada, tamaños de paquete más pequeños y nuevas características como la API de Slices combinadas y las comprobaciones de modo de desarrollo en Reselect. La versión de prueba actual es beta4, con planes de envío para la primera semana de diciembre. Se espera que RTK 3.0, centrado en las actualizaciones de consulta de RTK, se lance el próximo año.
Available in English: Modern Redux With Redux Toolkit

1. Introducción a Redux Toolkit 2.0

Short description:

Hola, soy Mark Erickson, un ingeniero senior de front-end en Replay. Hoy, hablaré sobre las novedades en Redux Toolkit 2.0.

Muy bien, gracias. Hola, soy 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 depurador de viaje en el tiempo para JavaScript. Tenemos un stand en el salón de vendedores. Por favor, pasen. Creo que todavía nos quedan algunos gatos pato amarillos, y nos encantaría contarles cuánto más fácil hace Replay la depuración. Responderé preguntas en cualquier lugar donde haya un cuadro de texto en internet. Recojo todo tipo de enlaces útiles. Soy un escritor de publicaciones de blog extremadamente largas, y soy un mantenedor de Redux y creador de Redux Toolkit. Pero la mayoría de la gente me conoce como ese tipo con el avatar de los Simpsons.

2. Cambios y Desafíos en Redux Toolkit 2.0

Short description:

Redux Toolkit 2.0 tiene como objetivo abordar la compatibilidad de los módulos ES Common JS, modernizar la salida de compilación de JS, enviar nuevas funciones, eliminar API obsoletas y proporcionar mejores tipos y empaquetado de TypeScript para Redux core y React Redux. Sin embargo, lograr la compatibilidad de los módulos ES Common JS ha demostrado ser difícil, lo que llevó a una publicación de blog y discusiones sobre el tema. El plan para enviar Redux Toolkit 2.0 se amplió para incluir otros paquetes como Redux Thunk, Reselect y React Redux, lo que resultó en versiones mayores para todos. Los cambios en RTK 2.0 incluyen la eliminación de la sintaxis de objeto en Create Slice y Create Reducer, la introducción de una sintaxis de devolución de llamada del constructor para una mejor seguridad de tipo, la mejora de las opciones para ConfigureStore y la eliminación de campos obsoletos y el tipo AnyAction en favor de UnknownAction. Ya no se envían artefactos de compilación UMD, pero se agradece la retroalimentación sobre su necesidad.

Bueno, Redux Toolkit salió en octubre de 2019. El original Redux salió en 2015, por lo que RTK ha estado disponible la mitad del tiempo que Redux ha existido, y aún así, muchas personas aún no lo conocen. Así que enviamos la versión 1.9 hace un año, y a principios de este año, comenzamos a trabajar en RTK 2.0, y teníamos varios objetivos. Uno es corregir la compatibilidad de los módulos ES Common JS, sea lo que sea que eso signifique. Otro es modernizar la salida de compilación de JS. Podemos dejar de preocuparnos por IE 11. Teníamos algunas nuevas funciones que queríamos enviar, queríamos eliminar algunas API obsoletas, y queríamos enviar versiones actualizadas del núcleo de Redux y React Redux con mejores tipos de TypeScript y packaging.

Desafortunadamente, resulta que la compatibilidad de los módulos ES Common JS es realmente difícil. He pasado gran parte de mi año golpeando mi cabeza contra la pared tratando de hacer que esto funcione, creo que encontré algunas configuraciones que son correctas. Ha sido un verdadero dolor. Terminé escribiendo una publicación de blog muy larga sobre lo difícil que ha sido esto y muchos otros mantenedores de bibliotecas han acordado y dicho, sí, sí, estamos lidiando con lo mismo. Entonces, escribí una publicación de blog sobre esto. Está en mi sitio, blog.iswordsoftware.com. También, tuve un par de conversaciones y podcasts sobre cómo lidiar con esto también.

Entonces, el plan original era simplemente enviar Redux Toolkit 2.0. Además, para el caso, habíamos convertido el núcleo de Redux a TypeScript en 2019 y nunca lo enviamos porque los tipos de la versión 4 todavía eran lo suficientemente buenos, y estábamos preocupados por los cambios disruptivos. Entonces, íbamos a enviar ambos juntos, y luego me di cuenta de que nuestros otros paquetes necesitaban estos mismos cambios. Redux Thunk, Reselect, React Redux. Todos necesitaban las mismas actualizaciones de packaging, también, y eso realmente significa versiones mayores para todo. Entonces, ¿qué está cambiando realmente? Tenemos algunos cambios disruptivos en RTK 2.0. Esperemos que sean relativamente menores. Hemos eliminado una sintaxis de objeto que se usaba en Create Slice y Create Reducer. Hay una sintaxis de devolución de llamada del constructor que proporciona una mejor type safety, y realmente es la misma cantidad de líneas de código. Incluso tenemos un mod de código para convertir eso por ti. Hemos mejorado algunas de las opciones para ConfigureStore, nuevamente, para una mejor type safety. Hay algunos campos obsoletos que finalmente eliminamos. Los tipos de Redux tenían un tipo AnyAction que era muy laxo, y lo hemos reemplazado con un tipo UnknownAction. En términos del proceso de compilación, hemos dejado de enviar artefactos de compilación UMD. No puedo encontrar ninguna razón para mantenerlos. Si crees que todavía los necesitamos, y tienes un caso de uso para ello, por favor házmelo saber.

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
State management is not limited to complex applications and transitioning to a store offers significant benefits. Pinia is a centralized state management solution compatible with Vue 2 and Vue 3, providing advanced devtools support and extensibility with plugins. The core API of Pinia is similar to Vuex, but with a less verbose version of stores and powerful plugins. Pinia allows for easy state inspection, error handling, and testing. It is recommended to create one file per store for better organization and Pinia offers a more efficient performance compared to V-rex.
Uso efectivo de useEffect
React Advanced Conference 2022React Advanced Conference 2022
30 min
Uso efectivo de useEffect
Top Content
Today's Talk explores the use of the useEffect hook in React development, covering topics such as fetching data, handling race conditions and cleanup, and optimizing performance. It also discusses the correct use of useEffect in React 18, the distinction between Activity Effects and Action Effects, and the potential misuse of useEffect. The Talk highlights the benefits of using useQuery or SWR for data fetching, the problems with using useEffect for initializing global singletons, and the use of state machines for handling effects. The speaker also recommends exploring the beta React docs and using tools like the stately.ai editor for visualizing state machines.
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
Global state management and the challenges of placing server state in global state are discussed. React Query is introduced as a solution for handling asynchronous server state. The Talk demonstrates the process of extracting logic into custom hooks and fixing issues with state and fetching logic. Optimistic updates with mutation are showcased, along with the benefits of using React Query for data fetching and mutations. The future of global state management is discussed, along with user feedback on React Query. The Talk concludes with an invitation to explore React Query for server state management.
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
State management in React is a highly discussed topic with many libraries and solutions. Jotai is a new library based on atoms, which represent pieces of state. Atoms in Jotai are used to define state without holding values and can be used for global, semi-global, or local states. Jotai atoms are reusable definitions that are independent from React and can be used without React in an experimental library called Jotajsx.
Anunciando Starbeam: Reactividad Universal
JSNation 2022JSNation 2022
27 min
Anunciando Starbeam: Reactividad Universal
Starbeam is a library for building reactive user interfaces with JavaScript, similar to Svelte, Vue, and Ember. It provides a data structure and query feature for filtering and sorting. The useStarBeam function ensures JSX reconciliation only occurs when reactive dependencies change. Starbeam tracks every read and write operation to update the component accordingly. It can be used with React and other frameworks, and offers debugging tools and locale integration.
Por qué deberías usar Redux en 2024
React Summit 2024React Summit 2024
33 min
Por qué deberías usar Redux en 2024
Top Content
Mark Erickson explains the history, creation, evolution, and benefits of Redux. Redux was designed to make state updates and action history maintenance easy, incorporating functional programming principles. Redux Toolkit was created to simplify Redux usage. Redux is still a valid choice for its consistent pattern and separation of state from UI. The decision to use Redux depends on the specific use case and the need for centralized state management.

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.