Estilos Dinámicos en React con Classnames y useState

Clase 17 de 57Curso de Next.js 14

Resumen

En el ámbito del desarrollo frontend, la capacidad de modificar estilos en tiempo real es una herramienta poderosa y esencial que brinda interactividad y dinamismo a nuestras páginas web. Un enfoque común para lograrlo es utilizar estilos dinámicos que cambian en respuesta a las interacciones del usuario, como clics en botones. En este artículo, voy a guiarte a través de la implementación práctica de los estilos dinámicos en XJS utilizando la biblioteca Classnames, una herramienta ampliamente reconocida por su eficacia en entornos profesionales.

¿Cómo empezar con estilos dinámicos en XJS?

Empezaremos con un caso práctico: tenemos una imagen y queremos que al hacer clic en ella, aparezca un borde de color rosa. Para lograr esto, trabajaremos con un componente en XJS y haremos uso del hook useState de React para manejar el estado que controlará la presencia del borde.

¿Haciendo el componente interactivo, qué necesitamos?

Para que el componente sea interactivo, debemos convertirlo de un tipo servidor a un tipo cliente. Esto implica:

  • Crear un estado llamado hasBorder utilizando el hook useState.
  • Inicializar este estado en false.
  • Agregar un botón sobre nuestra imagen que, al hacer clic, cambie el estado de hasBorder.

¿Cómo manejar los eventos y el estado en React?

La gestión de eventos en React se realiza a través de la función handleClick que actualizará el estado hasBorder usando setBorder. Este evento se asociará al botón mediante la propiedad onClick.

¿Qué es Classnames y cómo se instala?

Classnames es una biblioteca que simplifica la asignación condicional de clases CSS a elementos en React. Para utilizarla, se instala ejecutando npm i Classnames en la consola y se importa en el archivo donde se encuentre nuestro componente.

¿Cómo organizar los estilos y la importación de Classnames?

Para mantener el código ordenado, es recomendable seguir un estándar de importaciones. Por ejemplo:

  1. Importaciones de librerías externas.
  2. Estados de React.
  3. Componentes.
  4. Estilos.

Tras la instalación, las clases se aplican mediante la sintaxis de Classnames, la cual permite agregar estilos dinámicos a través del nombre de las clases.

¿Cómo aplicar estilos condicionales con Classnames?

Para aplicar estilos condicionales:

  • Se define una constante como buttonStyles donde se asignarán las clases condicionales usando Classnames.
  • Es importante usar el método bind de Classnames para empatar los estilos hasheados típicos de Next.js con nuestros estilos dinámicos.

¿Cómo finalizamos la implementación de estilos dinámicos?

Para finalizar:

  • Se crean los estilos CSS necesarios, como un modificador de clase que define el borde deseado.
  • Se asignan estas clases condicionales al elemento imagen, no al botón, para que el borde aparezca alrededor de la imagen cuando el estado hasBorder sea true.

Usando Classnames para modificar una imagen de manera dinámica

En conclusión, hemos logrado aplicar un estilo dinámico a una imagen en un proyecto XJS utilizando el hook useState de React y la poderosa biblioteca Classnames. Este flujo de trabajo demuestra cómo podemos controlar la interactividad y el estilo de nuestros componentes de manera sencilla y efectiva. Con esta herramienta, puedes seguir explorando y aprendiendo para incorporar funcionalidades dinámicas más complejas y mejorar la experiencia de usuario en tus proyectos frontend. ¡El aprendizaje continuo y la práctica te llevarán a crear interfaces web realmente interactivas y atractivas!