Saltar a contenido

Estructura y Buenas pr谩cticas - React

Nota

Antes de empezar y para puntualizar, React se considera un framework SPA Single-page application.

Aqu铆 tenemos que puntualizar que React por s铆 mismo es una librer铆a y no un framework, puesto que se ocupa de las interfaces de usuario. Sin embargo, diversos a帽adidos pueden convertir a React en un producto equiparable en caracter铆sticas a un framework.

En esta parte vamos a explicar los fundamentos de un proyecto en React y las recomendaciones existentes.

Estructura y funcionamiento

Como funciona React

React es una herramienta para crear interfaces de usuario de una manera 谩gil y vers谩til, en lugar de manipular el DOM del navegador directamente, React crea un DOM virtual en la memoria, d贸nde realiza toda la manipulaci贸n necesaria antes de realizar los cambios en el DOM del navegador. Estas interfaces de usuario denominadas componentes pueden definirse como clases o funciones independiente y reutilizables con unos par谩metros de entrada que devuelven elementos de react. En ese tutorial solo utilizaremos componentes de tipo funci贸n.

Por si no te suena, un componente web es una forma de crear un bloque de c贸digo encapsulado y de responsabilidad 煤nica que puede reutilizarse en cualquier pagina mediante nuevas etiquetas html.

Nota

Desde la versi贸n 16.8 se introdujo en React el concepto de hooks. Esto permiti贸 usar el estado y otras caracter铆sticas de React sin necesidad de escribir una clase.

Ciclo de vida de un componente en React

El comportamiento de ciclo de vida de un componente React pasa por diferentes etapas que podemos ver en el esquema que mostramos a continuaci贸n:

react-lifecycle

Es importante tenerlo claro para saber que m茅todos podemos utilizar para realizar operaciones con el componente.

Carpetas creadas por React

Al crear una aplicaci贸n React, tendremos los siguientes directorios:

  • node_modules: Todos los m贸dulos de librer铆as usadas por el proyecto.
  • \src\app: Contiene todo el c贸digo asociado al proyecto.
    • \src\assets: Normalmente la carpeta usada para los recursos.

Otros ficheros importantes de un proyecto de React

Otros archivos que debemos tener en cuenta dentro del proyecto son:

  • package.json: Dependencias de librer铆as y scripts

Estructura de nuestro proyecto

Existe m煤ltiples consensos al respecto de c贸mo estructurar un proyecto en React, pero al final, depende de los requisitos del proyecto. Una sugerencia de c贸mo hacerlo es la siguiente:

- src\
    - components         /* Componentes comunes */ 
  - context            /* Carpeta para almacenar el contexto de la aplicaci贸n */ 
  - pages              /* Carpeta para componentes asociados a rutas del navegador */
      - components     /* Componentes propios de cada p谩gina */ 
  - redux              /* Para todo aquello relacionado con el estado de nuestra aplicaci贸n */
  - types              /* Carpeta para los tipos de datos de typescript */

Recordad, que 茅sto es una sugerencia para una estructura de carpetas y componentes. No existe un est谩ndar.

Buenas pr谩cticas

A continuaci贸n, veremos un listado de buenas pr谩cticas de React y de c贸digo limpio que deber铆amos intentar seguir en nuestro desarrollo.

Estructura de archivos

Antes de empezar con un proyecto lo ideal, es pararse y pensar en los requerimientos de una buena estructura, en un futuro lo agradecer谩s.

Nombres claros

Utilizar la S de los principios S.O.L.I.D para los nombres de variables, m茅todos y dem谩s c贸digo.

El efecto que produce este principio son clases con nombres muy descriptivos y por tanto largos.

Organiza tu c贸digo

Intenta organizar tu c贸digo fuente:

  • Lo m谩s importante debe ir arriba.
  • Primero propiedades, despu茅s m茅todos.
  • Un Item para un archivo: cada archivo deber铆a contener solamente un componente, al igual que los servicios.
  • Solo una responsabilidad: Cada clase o modulo deber铆a tener solamente una responsabilidad.
  • El nombre correcto: las propiedades y m茅todos deber铆an usar el sistema de camel case (ej: getUserByName), al contrario, las clases (componentes, servicios, etc) deben usar upper camel case (ej: UserComponent).
  • Los componentes y servicios deben tener su respectivo sufijo: UserComponent, UserService.
  • Imports: los archivos externos van primero.

Usar linters Prettier & ESLint

Un linter es una herramienta que nos ayuda a seguir las buenas pr谩cticas o gu铆as de estilo de nuestro c贸digo fuente. En este caso, para JavaScript, proveeremos de unos muy famosos. Recordar que a帽adir este tipo de configuraci贸n es opcional, pero necesaria para tener un buen c贸digo de calidad.

Usa el estado correctamente

La primera regla del hook useState es usarlo solo localmente. El estado global de nuestra aplicaci贸n debe de entrar a nuestro componente a trav茅s de las props as铆 como las mutaciones de este solo deben realizarse mediante alguna herramienta de gesti贸n de estados como redux. Por otro lado, es preferible no abusar de los hooks y solo usarlos cuando sea realmente necesario ya que pueden reducir el rendimiento de nuestra aplicaci贸n.

Reutiliza c贸digo y componentes

Siempre que sea posible deberemos de reutilizar c贸digo mediante funciones compartidas o bien si este c贸digo implica almacenamiento de estado u otras caracter铆sticas similares mediante custom Hooks.

Usa TS en lugar de JS

Ya hemos creado nuestro proyecto incluyendo typescript pero esto no viene por defecto en un proyecto React como si pasa con Angular. Nuestra recomendaci贸n es que siempre que puedas a帽adas typescript a tus proyectos React, no solo se gana calidad en el c贸digo, sino que eliminamos la probabilidad de usar un componente incorrectamente y ganamos tiempo de desarrollo.