
Agregar clases de Tailwind de forma condicional, es un reto interesante, pues no podemos generarlas en el cliente, ya que no existirán en nuestro bundle.
Tomemos como ejemplo este switch, que hecho completamente en Tailwind, lo puedes encontrar en este Replit.

Para que al hacer click el switch se mueva, y se pongan en verde sus partes, debemos manipular las clases de Tailwind de este componente. ¿Cómo? Te presento 2 formas:
1. Usando backticks
Al interpolar una cadena de texto (string), podemos usar un ternario para intercambiar la clase entre dos distintas.
Gracias a que las clases que usamos ya están escritas en el código, Tailwind va a incluirlas en el bundle, lo que nos permite usarlas de esta forma, y funciona muy bien, aunque la sintaxis no es muy bonita. 😬
2. Usando clsx
clsx es una librería que nos ayuda a construir los classNames de nuestros elementos, de una forma más ordenada, y menos verbosa.
Solo instálala con:
Puedes ver el paquete de npm aquí.
Lo que realmente está haciendo clsx es combinar cadenas de texto (strings) para generar tu propiedad className para tus divs.
clsx toma tus argumentos, que pueden tener una gran variedad de formas:
Y las combina en un solo string que puedes añadir a tus elementos:
Mucho más legible, ¿no crees?
De hecho, clsx es el reemplazo moderno, de una librería más vieja llamada classnames.
🎬 ¿Te está gustando este contenido? Tenemos más tutoriales en video en nuestro canal de YouTube.
Ejemplo: Hagamos un switch
Ya que conoces las 2 formas de añadir clases de Tailwind dinámicamente, hagamos funcionar este switch:
El resultado:

Puedes agregar más clases y tener un mejor switch, pero ya captas la idea, ¿no?
Conclusión
Ahora tienes 2 formas de agregar estilos de Tailwind de forma condicional. ¡Úsalas en tu siguiente proyecto!
Abrazo. Bliss.
Video
Te dejo un video donde explico esto mismo:
Posts relacionados

Cómo tipar eventos en React con TypeScript
Checa este otro Post

