Por qué la gestión estatal, como Redux, puede resolver sus problemas

Fue recientemente que he estado desarrollando WordPress, PHP y JavaScript durante algún tiempo. En los últimos 5-6 años, he aprendido algunas buenas prácticas que ya no son las mejores. Por ejemplo, la gestión del estado, la práctica de poner todos los valores dinámicos de su aplicación, un usuario entra en un formulario, las publicaciones de la página actual, etc. – En un lugar, no era ordinario. Ahora no puedo imaginar mi vida sin toda mi condición en un solo lugar. Cuando comencé a escribir JavaScript, si necesitaba saber o actualizar el valor de un campo de formulario, utilicé el método Val () de JQuey. Si tuviera que hacer algo cada vez que cambie, me suscribiría a su modificación con el método jQuery Change (). Por supuesto, la wave () no desencadena el evento de modificación, por lo que tuve que recordar haber usado jQuery.rigger () para eso.
Este es un ejemplo de un patrón que inicia un complejo simple de nada simple para aprender, y se vuelve rápidamente inestable y anti-rendimiento. Aprender el uso de una solución de gestión estatal, como Redux, es una complicación adicional que requiere tiempo. La gestión del estado, cuando se usa correctamente, es el tipo de complicación adicional en la estructura de una aplicación que hace que el desarrollo y las pruebas de la aplicación menos complicada. La tecnología se mueve rápidamente y ahora la mejor práctica es la gestión estatal. La gestión del estado, utilizando un instrumento como Redux, que es muy popular para las aplicaciones React, crea una sola fuente de verdad para el estado de la aplicación. Esto se asemeja al uso de un contenedor, un tema que abordé en un contexto de PHP.
En este artículo, cubriré lo que los problemas resuelven las herramientas de gestión estatales como Redux. En mi próxima publicación, abordaré el intercambio de los componentes entre las aplicaciones React y los bloques de Gutenberg. Una parte clave de esta publicación se refiere al uso de Redux WordPress Abstraction. Comencemos con por qué. La responsabilidad única de la gestión del estado, el principio de responsabilidad única, que escribimos antes, requiere una simplicidad para nuestro código, porque cada función solo puede hacer una cosa. El principio de responsabilidad única (SRP) estipula que cada módulo de software debe tener una y una razón para cambiar. El BOB es la única responsabilidad de la gestión del estado es administrar el estado. En una aplicación React, podemos tener componentes “estúpidos” que tienen su estado proporcionado como elementos de accesorios. Esta condición puede provenir de los componentes principales en los que están vestidos, redux, datos simulados, cualquier cosa. Existen funciones puras, funciones que toman entradas y crean resultados sin efectos secundarios, y por lo tanto están desacopladas por la gestión del estado. Si la presentación de datos cambia, ese cambio tiene lugar en el componente React. Si la forma en que administramos la actualización de datos, el cambio tiene lugar en la administración estatal.
Llamamos a Redux, o Vuex, o flujo, o lo que sea que use, la única fuente de verdad para el estado, porque es el único lugar donde el estado realmente vive. Cualquier otra cosa es un estado de observación. Algunos conceptos básicos en esta sección, pasaré por algunos elementos básicos de Redux State Management, que usa Gutenberg. Discutiendo estos conceptos, el uso de Rodux como ejemplo concreto es útil para el desarrollo de WordPress y reacciona y me impide escribir solo sobre conceptos abstractos. Notaré cómo se implementan estos conceptos en Vuex, por lo que puede ver que estos son modelos implementados más allá de React + Redux. Estos ejemplos y ejemplos en las diapositivas de mi discurso en la Conferencia JavaScript son de la gestión de estado del módulo IU del CALDERA FOR FORMAS DE FORMAS. Se simplifican para mayor claridad. Le recomiendo que eche un vistazo a ese código en GitHub para un ejemplo completo y práctico. Restauramos los ejemplos para usar un objeto en lugar de un mapa. Vale la pena señalar, porque ciertamente le recomiendo que comience con un objeto, pero considere otros tipos de datos que podrían ser más fáciles de administrar. Reducadores de Redux, la condición se gestiona mediante funciones de descuento. En los reductores de programación funcional, por ejemplo, Array.ruce () en JavaScript, tome una colección de entradas y reduzca a un solo valor. Ese valor de salida único puede ser de cualquier tipo. Puede contar las entradas y puede devolver un total como un número entero.
Un reductor de Rodux se hace cargo de la condición actual y devuelve la nueva condición. Porque React solo jugará si el objeto dado ha cambiado, no si se ha movido, casi siempre queremos devolver un nuevo objeto en nuestra reducción. En general, utilizamos un reductor para una recopilación de datos y especificamos acciones específicas para una reducción de ACT. En Rodux llamamos a estas acciones, en Vuex, las llamamos mutaciones. Las mutaciones son un término mejor en mi mente, porque cambian la condición, pero las acciones son una buena metáfora porque enviamos estas acciones en REDX, lo que los lleva al reductor correcto y aplica el middleware. Los descuentos de Redux generalmente toman un objeto como el segundo argumento , esta es la acción y use una estructura de control de interruptor en Action. Type. P.ej:
Observe que uso el operador de propagación cuando devuelva el estado. Mi objetivo era agregar a la tienda Matrix en los procesadores de los Estados Unidos. Podría haber usado state.processors.push () para modificar esa matriz y luego habría devuelto el estado. El objeto se habría actualizado como quisiera, pero React no se habría actualizado como resultado. ¿Por qué? Debido a que mover la matriz (un tipo de objeto) no creó un nuevo objeto, actualizó el objeto para el que se proporcionó una referencia. Debemos proporcionar a reaccionar un nuevo objeto.
Este es un problema que se resuelve inmutable.js. Recomiendo, cuando comience con Redex, cada vez que se enoja porque React no se actualiza correctamente, suponga que ha cambiado un objeto en lugar de crear uno nuevo. Es probable que este sea el problema. Además, lea la Introducción a Immutable.js, pero en realidad no lo use. Puede usar SimMutable.js más tarde, pero tratando de aprender esto y recto y reaccionar de inmediato, demasiado y probablemente no necesite ese nivel adicional de complicación. Acciones Si observa este reductor súper simple, podemos suponer que las acciones tendrán una cierta “forma”. Esta es la estructura del objeto que se creará cada vez que enviamos esta acción. Para mantener la forma de ese objeto consistente a lo largo de la aplicación, agregamos una función de crear la acción. Estas funciones también son funciones puras y tienen la responsabilidad de definir la forma de la acción.

Las funciones de acción están fuertemente acopladas con un reductor. Digo esto porque si tengo que cambiar el formulario, el reductor y la acción deben cambiar. Estoy de acuerdo con esto porque funciona, es un estándar y podemos decir que el modelo de acción y el reductor (y el selector) tienen la responsabilidad de administrar una determinada base de datos. Y me gusta esto porque es un modelo repetible que se restaura juntos cuando se debe hacer un cambio. Las acciones de selectores le dicen a los reductores que hagan mutaciones. Maravilloso, pero también necesitamos una forma de obtener datos del estado y en nuestras pruebas o solicitudes de API. Aquí es donde intervienen los selectores. Los selectores son responsables de obtener los datos correctos, en la forma correcta del estado.
En Vuex, el equivalente de los selectores de Rodux son Getters. Me gusta este nombre, getters o Rodux Selectors son características que reciben datos. Por ejemplo, si su objeto de estado tiene una serie de publicaciones, puede agregar una función de selección para encontrar la publicación por ID: Volver a los ejemplos en la biblioteca del procesador de formularios de caldera, aquí está el selector para obtener un procesador después de ID de estado:
Agregar selectores a una aplicación requiere una biblioteca, como el módulo de datos REelect o WordPress, que cubriré en mi próxima publicación. Solvers todo lo que he mostrado hasta ahora ha usado funciones puras. Estas funciones deben ser sincrónicas. En Rodux, el middleware se usa para acciones asincrónicas. Esta es probablemente la parte más compleja de la instalación de Rodux, de mi experiencia. La solución más simple que encontré es el módulo de datos de WordPress. En un almacén de datos de WordPress, se puede agregar un “resolución”. Esta función de resolución puede ser asincrónica y se llama cuando se llama por primera vez un selector del mismo nombre, con un argumento (s) dado. Por ejemplo, si tuviera un selector y resolución llamado GetPost, para una tienda que siguió a una serie de publicaciones, la primera vez, el selector de GetPost se llamó una solicitud API REST WordPress, con el conjunto de resultados. Las secciones posteriores de esta publicación solo utilizarán el valor en el estado. Esta es una implementación simple y hermosa de la carga perezosa para datos. Si ha tenido un selector y resolución que se ha interrogado después de la página, ejecute infinitamente y cargue varias interfaces de tipo se vuelvan fáciles de administrar. Aquí hay un ejemplo práctico, extraído del bloque Gutenberg de las formas de caldera:

Copyright statement: Unless otherwise noted, this article is Collected from the Internet, please keep the source of the article when reprinting.

Check Also

gkOVSBm5B8SgiXmo

Shopify vs WooCommerce – ¿Cuál es la mejor plataforma?(Comparación)

Shopify vs WooCommerce

Leave a Reply

Your email address will not be published. Required fields are marked *