Estado. Aquí estoy demostrando esto usando el componente de deslizador personalizado. El código de la izquierda tiene antipatrones. Por ejemplo, hay cuatro useStates y tres callbacks. El estado de startPosition registra la posición inicial del cursor. El código de la derecha es su versión refactorizada. Observa que no tenemos ningún useState y solo un callback porque hemos utilizado el contexto local del callback para almacenar toda la información en curso relacionada con las interacciones del usuario. Cuando aplicamos esta refactorización a nuestro framework, pudimos reducir drásticamente la proporción de useState por componente. Nuestra proporción actual de número de useStates respecto al número total de hooks y componentes personalizados es de aproximadamente 1 a 3. Para darte una idea del tamaño de nuestra base de código, tiene alrededor de 100 hooks personalizados y alrededor de 200 componentes.
La siguiente pista para los antipatrones es si estás utilizando anidamiento para organizar componentes. Ten en cuenta que al usar anidamiento, si no prestas atención, es posible que pases estados duplicados a los hijos. Esto puede llevar a inconsistencias de estados entre el padre y los hijos. Recuerda que nuestro código debe ser independiente de la secuencia en la que los componentes se renderizarán. Además, debe haber una única fuente de verdad para cada estado, de lo contrario, esto resultará en errores.
Lo segundo a tener en cuenta aquí es que rastrear los cambios en el estado es el paso más lento en la depuración. Dado que el anidamiento permite cambios de estado en cada nivel, lleva más tiempo depurar.
La tercera pista es si estás utilizando muchos estados no controlados o muchos componentes no controlados. Somos conscientes de que hay un debate activo sobre el uso de componentes controlados, pero creemos que se deben preferir los componentes controlados, especialmente si el número de interacciones por página es alto. En nuestro framework, hemos logrado reducir los errores en más del 80% mediante el uso de componentes controlados.
Entonces, para resumir, ten mucho cuidado cuando uses hooks sin dependencias y cuando uses anidamiento para organizar componentes. Definitivamente debemos evitar dos antipatrones. El primero es usar props en el contexto o como estado inicial, y el segundo es usar el antipatrón de destruir y recrear. Como su nombre lo indica, este antipatrón se refiere a eliminar el componente del DOM y destruir todos los hooks y estados creados durante la primera llamada de función. Luego, se crea el componente nuevamente desde cero. Este antipatrón puede provocar problemas como el efecto de parpadeo.
Hay cuatro patrones de codificación que recomendamos a nuestros desarrolladores que prefieran para reducir los errores. El primero es usar props en JSX. El segundo, utilizar el contexto del controlador de eventos para almacenar el estado. Tercero, en lugar de intentar hacer que useState funcione de alguna manera con parches, cambia a un hook que tome dependencias como UseMemo. Y cuarto, utiliza componentes controlados siempre que sea posible. Gracias por escuchar. Estas son mis redes sociales. Si estás interesado en leer más sobre estos antipatrones, puedes consultar mi publicación en el blog. Allí discuto estos antipatrones con más detalle. También he utilizado una aplicación de ejemplo en el blog que demuestra estos antipatrones. Por último, este es el enlace al framework de desarrollo web de pila completa que estamos construyendo. Si estás interesado en contribuir a nuestro proyecto o compartir comentarios, por favor échale un vistazo. Y si te gusta lo que estamos construyendo, por favor comienza nuestro repositorio. ¡Gracias!
Comments