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.
Comments