Puedes hacer que tu código sea más visualizable y eso te ayuda. Pero, ¿qué estamos haciendo con la planificación, verdad? Mayormente estamos siguiendo el concepto de planificación basada en la implementación, ¿verdad? Y no en la planificación basada en la mantenibilidad. Entonces, con ese ejemplo que mostramos anteriormente, estamos mayormente pensando en, bueno, ¿qué hay en nuestros efectos? ¿Cuáles son las props? ¿Cuáles son los estados y demás? Y eso nos lleva a una conclusión de que ¿qué puede ser una mejor manera, verdad? ¿Qué puede ser una mejor manera de planificar nuestras interfaces de usuario en lugar de planificar la implementación?
Y ahora quizás puedas ver que dado que tenemos muchos estados y puede haber muchas permutaciones y combinaciones de esos estados en el futuro, tiene que haber una manera, o tiene que haber algún tipo de sistema donde podamos evitar estas múltiples declaraciones if else para manejar qué hacer cuando este estado está presente y este estado no está presente. Puede haber un sistema donde simplemente podamos verificar y orquestar nuestros estados y transiciones entre esos estados de una mejor manera. Y obviamente lo adivinaste, ¿verdad? Así es como las máquinas de estado finito nos ayudan.
Entonces, si tuviera que decir esto de una manera más simple lo que las máquinas de estado finito tienen para ofrecer es básicamente tienes un estado inicial o una condición inicial o una situación inicial de la interfaz de usuario, en la que podría estar. Y luego puedes realizar alguna acción con ese estado. Y si ese estado recibe una acción, pasa a un estado siguiente. Y en todo momento, cada estado sabe, según una acción, cuál será el siguiente estado por el que pasará la interfaz de usuario o tu código. Y eso es lo que significan estas tres palabras, ¿verdad? Tienes un número finito de estados. Tienes un estado obviamente, que es una condición o situación en la que se encuentra tu interfaz de usuario. Y básicamente hay una máquina, que está orquestando ese estado y cómo esos estados hacen transiciones basadas en acciones. Entonces, eso es principalmente el punto completo de una máquina de estado finito. Muy bien, dicho esto, intentemos comenzar a pensar en cómo podemos pensar en máquinas de estado con eso.
Muy bien, con ese ejemplo en mente, vamos a ver principalmente que, bueno, básicamente hay cuatro tipos con los que una interfaz de usuario puede existir. Puede estar inactiva o puedo hacer clic en el botón para que mi interfaz de usuario entre en un estado de carga que indique, bueno, se está iniciando sesión. Y si inicio sesión correctamente, voy a un estado de éxito o a un estado de error. Y eso es lo que define nuestras transiciones. Definimos que, bueno, cuál es el estado actual y, en función de eso, cuáles son las transiciones a las que ese estado puede ir y cuál es el siguiente estado. Y básicamente, dicho esto, tienes un estado, tienes una acción. Por ejemplo, si estoy en un estado inactivo, realizo una acción llamada submitForm y luego voy a un estado llamado isLoading. Y así es como visualizas las cosas y cómo creas un modelo mental de máquinas de estado en tu mente.
Entonces, si ves una correspondencia entre tu visualización y el código, básicamente en el lado derecho ves dos objetos simples donde un objeto state define cuáles son estos círculos a la izquierda, que son los estados que tienes. Y este objeto transitions simplemente te permite saber que, bueno, si estoy en un estado, digamos, states.idle, y realizo una acción llamada submitForm, voy a un estado llamado states.loading. Así que eso hace que tu interfaz de usuario sea más predecible y que toda esta lógica esté en un solo lugar. Y obviamente, dado que tenemos este cerebro listo, tenemos que decirle a este cerebro cómo comunicarse entre sus otros estados, ¿verdad? Entonces, esta es una función llamada transition. Y lo que hace es, básicamente, sabe cuál es el estado actual, cuál es la acción, y en función de eso, a qué estado siguiente tengo que ir. Y este cerebro y el cuerpo que se configuran en esta máquina, solo tienes una función simple justo debajo, que es updateForm state, donde no haces nada más que dejar que transition te diga cuál es el siguiente estado. Y simplemente establezco mi estado en función de eso.
Muy bien, dicho esto, creo que estás aburrido de todas estas teorías.
Comments