Este documento describe las mejores prácticas que debes seguir al trabajar en el frontend.Documentation Index
Fetch the complete documentation index at: https://docs.twenty.com/llms.txt
Use this file to discover all available pages before exploring further.
Gestión de estado
React y Jotai manejan la gestión de estado en la base de código.Usa useAtomState para almacenar el estado
Es buena práctica crear tantos átomos como necesites para almacenar tu estado.
No uses useRef para almacenar el estado
Evita usar useRef para almacenar el estado.
If you want to store state, you should use useState or useAtomState.
Consulta cómo gestionar las re-renderizaciones si sientes que necesitas useRef para evitar algunas re-renderizaciones.
Gestión de las re-renderizaciones
Las re-renderizaciones pueden ser difíciles de gestionar en React. Aquí hay algunas reglas a seguir para evitar re-renderizaciones innecesarias. Ten en cuenta que siempre puedes evitar re-renderizaciones comprendiendo su causa.Trabaja a nivel de raíz
Ahora es fácil evitar re-renderizaciones en nuevas funciones eliminándolas a nivel de raíz. ThePageChangeEffect sidecar component contains just one useEffect that holds all the logic to execute on a page change.
De esa manera, sabes que solo hay un lugar que puede desencadenar una re-renderización.
Always think twice before adding useEffect in your codebase
Re-renders are often caused by unnecessary useEffect.
You should think whether you need useEffect, or if you can move the logic in a event handler function.
You’ll find it generally easy to move the logic in a handleClick or handleChange function.
También puedes encontrarlas en bibliotecas como Apollo: onCompleted, onError, etc.
Use a sibling component to extract useEffect or data fetching logic
If you feel like you need to add a useEffect in your root component, you should consider extracting it in a sidecar component.
Puedes aplicar lo mismo para la lógica de obtención de datos, con hooks de Apollo.
Usa estados de familia de jotai y selectores de familia de jotai
Los estados y selectores de familia de jotai son una gran manera de evitar re-renderizaciones. Son útiles cuando necesitas almacenar una lista de elementos.No deberías usar React.memo(MyComponent)
Evita usar React.memo() porque no resuelve la causa de la re-renderización, sino que rompe la cadena de re-renderización, lo que puede llevar a un comportamiento inesperado y hacer que el código sea muy difícil de refactorizar.
Limita el uso de useCallback o useMemo
A menudo no son necesarios y harán que el código sea más difícil de leer y mantener para una ganancia de rendimiento que es imperceptible.
Console.logs
Las declaracionesconsole.log son valiosas durante el desarrollo, ofreciendo información en tiempo real sobre los valores de las variables y el flujo de código. Pero, dejarlas en el código de producción puede llevar a varios problemas:
- Rendimiento: El registro excesivo puede afectar el rendimiento en tiempo de ejecución, especialmente en aplicaciones del lado del cliente.
- Seguridad: Registrar datos sensibles puede exponer información crítica a cualquier persona que inspeccione la consola del navegador.
- Limpieza: Llenar la consola con registros puede oscurecer advertencias o errores importantes que los desarrolladores o herramientas necesitan ver.
- Profesionalismo: Los usuarios finales o clientes que revisen la consola y vean una miríada de declaraciones de registros podrían cuestionar la calidad y el acabado del código.
console.logs antes de enviar el código a producción.
Nomenclatura
Nombres de variables
Los nombres de variables deben describir con precisión el propósito o función de la variable.El problema con los nombres genéricos
Los nombres genéricos en programación no son ideales porque carecen de especificidad, lo que lleva a la ambigüedad y reduce la legibilidad del código. Tales nombres no transmiten el propósito de la variable o función, lo que dificulta a los desarrolladores entender la intención del código sin una investigación más profunda. Esto puede resultar en un aumento del tiempo de depuración, una mayor susceptibilidad a errores y dificultades en el mantenimiento y colaboración. Mientras tanto, la nomenclatura descriptiva hace que el código sea autoexplicativo y más fácil de navegar, mejorando la calidad del código y la productividad del desarrollador.Algunas palabras a evitar en los nombres de variables
- ficticio
Manejadores de eventos
Los nombres de manejadores de eventos deben comenzar conhandle, mientras que on es un prefijo usado para nombrar eventos en las props de los componentes.
Props opcionales
Evita pasar el valor predeterminado para una prop opcional. EJEMPLO Toma el componenteEmailField definido a continuación:
Componente como props
Intenta tanto como sea posible pasar componentes no instanciados como propiedades, para que los hijos puedan decidir por sí mismos qué propiedades necesitan pasar. El ejemplo más común de esto son los componentes de icono:<MyIcon>
Prop Drilling: Mantenlo Minimalista
El prop drilling, en el contexto de React, se refiere a la práctica de pasar variables de estado y sus setters a través de muchas capas de componentes, incluso si los componentes intermedios no los usan. Aunque a veces es necesario, el exceso de prop drilling puede llevar a:- Readabilidad Reducida: Rastrear de dónde proviene una propiedad o dónde se utiliza puede volverse complicado en una estructura de componentes muy anidada.
- Desafíos de Mantenimiento: Los cambios en la estructura de propiedades de un componente podrían requerir ajustes en varios componentes, incluso si no utilizan directamente la propiedad.
- Reducción de la Reusabilidad del Componente: Un componente que recibe muchas propiedades solo para pasarlas se vuelve menos general y más difícil de reutilizar en diferentes contextos.