Saltar al contenido principal

Componentes

Los componentes permiten separar la interfaz de usuario en piezas independientes, reutilizables y pequeñas, pensar en cada pieza de forma aislada donde cada uno de ellos se haga cargo de su responsabilidad.

JSX es JavaScript y los componentes son exportados como funciones, las funciones en JavaScript solo pueden devolver un tipo de valor.

Esto también se aplica a React, es por eso por lo que un componente solo puede devolver un elemento o componente.

ElementoComponente
Siempre es devuelto por un componente.Retorna un elemento u otro componente.
No dispone de ningún método.Se pueden crear tantos métodos como sea necesario.
Es una representación de objeto de un nodo DOM.Encapsula un árbol DOM.
Son inmutables, una vez creados no pueden ser modificados.El estado de un componente es mutable.
Puede ser creado usando React.createElement mediante el primer parámetro, type.Son creados mediante la función render de manera transparente en el return del componente.
No es posible utilizar Hooks ya que los elementos son inmutables.Es posible el uso de Hooks.
Son ligeros, sin estado y más rápido.Son comparativamente más lentos que los elementos.

2.0-components/src/main.jsx
loading...

2.0-components/src/components/Table/Table.jsx
loading...

Si el fichero del módulo es renombrado a index.jsx, el componente es importado por defecto solo con especificar el nombre del directorio.

2.1-components/src/main.jsx
loading...

tip

Es indiferente utilizar la extensión .js o .jsx, para mantener un orden se suele utilizar .js cuando se utiliza Vanilla JS y .jsx cuando contiene código específico de React.


Modo Estricto

React.StrictMode es un componente de React que no es renderizado en el HTML, permite envolver a otros componentes para ayudar a crearlos siguiendo las mejores prácticas.

  • Identifica con ciclos de vida inseguros.
  • Avisos sobre el uso de la API obsoleta.
  • Detección de efectos secundarios inesperados.
  • Detección de efectos inseguros.

tip

Es posible extraer StrictMode directamente de react. Cuando un componente no tiene hijos pueden utilizarse con la etiqueta de cierre a la derecha.

2.1-components/src/main.jsx
loading...

tip

No confundir con use strict de JavaScript, el cual se encuentra activo debido al uso de módulos.

Composición de Componentes

La composición en React es un patrón de desarrollo basado en el modelo de componentes (modularidad, reusabilidad, reparto de responsabilidades, ...), en el que se construyen componentes a partir de otros componentes más pequeños, para ensamblar una unidad cohesiva más grande.

Utilizar la composición facilita la reutilización de componentes dentro de la aplicación haciéndolos más fáciles de mantener y reduciendo su complejidad.


Por convención de nombres, todos los componentes se nombrarán en formato PascalCase, independientemente de que sean funciones.

/* Especificación del componente */
const Table = ()<table></table>;

/* Uso del componente */
<Table />
tip

En la especificación de un componente, solo debe exportarse a sí mismo. No se recomienda exportar más de uno para facilitar su reutilización.

tip

Es posible definir varios componentes en la especificación de un componente para usarlo de forma privada dentro del mismo. Dependerá de la complejidad del mismo.

tip

Del mismo modo que HTML permite anidar varios elementos bajo un mismo padre, con JSX es posible anidar uno o varios componentes bajo el mismo elemento HTML padre.

Jerarquía de componentes

tip

💡 Las etiquetas de los componentes de React, no son renderizados en el HTML que recibe el navegador.


El componente Table de React, está compuesto de un elemento table de JSX, junto con los componentes TableHead y TableBody.

2.2-components/src/components/Table/Table.jsx
loading...

2.2-components/src/components/Table/TableHead.jsx
loading...

2.2-components/src/components/Table/TableColumns.jsx
loading...

2.2-components/src/components/Table/TableBody.jsx
loading...

2.2-components/src/components/Table/TableRow.jsx
loading...

tip

Es muy importante diseñar bien nuestros componentes, para reducir el acoplamiento y aumentar la cohesión.

Fragmentos

Un patrón común en React es que un componente retorne múltiples elementos o componentes. Los Fragments te permiten agrupar una lista de hijos sin agregar nodos extra al DOM.

2.3-components/src/components/Table/Table.jsx
loading...

warning

No es posible utilizar el código anterior, debido a que la función está devolviendo dos componentes.

Una de las soluciones para evitar este comportamiento sería envolverlos en un elemento <div>.

2.4-components/src/components/Table/Table.jsx
loading...

Si bien soluciona el problema, debido a que la función solo devuelve un elemento <div>, a su vez genera un nuevo problema, la cantidad de <div> de envoltura que son generados en el HTML y que pueden afectar al comportamiento de los estilos y al rendimiento del código HTML.

2.5-components/src/components/Table/Table.jsx
loading...

Los Fragments se pueden utilizar de forma reducida y no necesitan de ser importados.

2.6-components/src/components/Table/Table.jsx
loading...