Queremos darte la mejor solución que encontramos en internet. Nosotros deseamos que te sirva de ayuda y si deseas aportar alguna mejora hazlo con total libertad.
¡Autor de Redux aquí!
Me gustaría decir que va a hacer los siguientes compromisos al usarlo:
-
Deberá aprender a evitar mutaciones. Flux no tiene opinión sobre la mutación de datos, pero a Redux no le gustan las mutaciones y muchos paquetes complementarios a Redux asumen que nunca mutas el estado. Puede hacer cumplir esto con paquetes solo para desarrolladores como redux-immutable-state-invariant, use Immutable.js o confíe en usted y en su equipo para escribir código no mutativo, pero es algo que debe tener en cuenta, y esto debe sea una decisión consciente aceptada por su equipo.
-
Tendrás que elegir cuidadosamente tus paquetes. Si bien Flux explícitamente no intenta resolver problemas “cercanos” como deshacer / rehacer, persistencia o formularios, Redux tiene puntos de extensión como middleware y mejoradores de tienda, y ha generado un ecosistema joven pero rico. Esto significa que la mayoría de los paquetes son ideas nuevas y aún no han recibido la masa crítica de uso. Puede depender de algo que claramente será una mala idea unos meses después, pero es difícil saberlo todavía.
-
Todavía no tendrás una buena integración de Flow. Flux actualmente te permite hacer cosas muy impresionantes static escribe comprobaciones que Redux aún no admite. Llegaremos allí, pero llevará algún tiempo.
Creo que el primero es el mayor obstáculo para los principiantes, el segundo puede ser un problema para los primeros usuarios demasiado entusiastas, y el tercero es mi manía personal. Aparte de eso, no creo que el uso de Redux traiga desventajas en particular que Flux evite, y algunas personas dicen que incluso tiene algunas ventajas en comparación con Flux.
Vea también mi respuesta sobre las ventajas de usar Redux.
Tanto Redux como Flux requieren una cantidad considerable de código repetitivo para cubrir muchos patrones comunes, especialmente aquellos que involucran la obtención de datos asincrónicos. La documentación de Redux ya tiene un puñado de ejemplos para la reducción repetitiva: http://redux.js.org/docs/recipes/ReducingBoilerplate.html. Puede obtener todo lo que pueda necesitar de una biblioteca Flux como Alt o Fluxxor, pero Redux prefiere la libertad a las funciones. Esto podría ser una desventaja para algunos desarrolladores porque Redux hace ciertas suposiciones sobre su estado que podrían ignorarse inadvertidamente.
La única forma de que realmente responda a su pregunta es probar Redux si puede, tal vez en un proyecto personal. Redux surgió debido a la necesidad de una mejor experiencia de desarrollador y está sesgado hacia la programación funcional. Si no está familiarizado con conceptos funcionales como reductores y composición de funciones, es posible que se ralentice, pero solo un poco. La ventaja de adoptar estas ideas en el flujo de datos es que las pruebas y la previsibilidad son más fáciles.
Descargo de responsabilidad: migré de Flummox (una implementación popular de Flux) a Redux y las ventajas superan con creces las desventajas. Prefiero mucha menos magia en mi código. Menos magia tiene el costo de un poco más de repetición, pero es un precio muy pequeño a pagar.
Flux y Redux. . .
Redux no es una implementación de Flux pura, pero definitivamente está inspirada en Flux. La mayor diferencia es que utiliza una única tienda que envuelve un objeto de estado que contiene todo el estado de su aplicación. En lugar de crear tiendas como lo hará en Flux, escribirá funciones reductoras que cambiarán el estado de un solo objeto. Este objeto representa todo el estado de su aplicación. En Redux obtendrá la acción y el estado actuales, y devolverá un nuevo estado. Eso significa que las acciones son secuenciales y el estado es inmutable. Eso me lleva a la estafa más obvia en Redux (en mi opinión).
Redux apoya un concepto inmutable.
¿Por qué la inmutabilidad?
Hay algunas razones para ello:
1. Coherencia – Un reductor siempre cambia el estado de la tienda, por lo que es fácil rastrear quién cambia qué.
2. Rendimiento – ¡Debido a que es inmutable, Redux solo necesita verificar si el estado anterior! == estado actual y, si es así, renderizar. No es necesario repetir el estado cada vez que se determina la representación.
3. Depuración – nuevos conceptos asombrosos como la depuración de viajes en el tiempo y la recarga en caliente.
ACTUALIZACIÓN: si eso no fue lo suficientemente persuasivo, vea la excelente charla de Lee Byron sobre las interfaces de usuario inmutables.
Redux requiere una disciplina de desarrollador a través del código base / bibliotecas para mantener esta idea. Deberá asegurarse de elegir bibliotecas y escribir código de manera no mutable.
Si desea obtener más información sobre las diferentes implementaciones de los conceptos de Flux (y qué funciona mejor para sus necesidades), consulte esta útil comparación.
Después de decir eso, debo admitir que Redux es hacia donde se dirige el desarrollo futuro de JS (en cuanto a escribir estas líneas).
Te mostramos reseñas y puntuaciones
Tienes la opción de sostener nuestro estudio exponiendo un comentario o dejando una valoración te lo agradecemos.