Główne logo strony
Tailwind

Kondycyjne klasy w Tailwind


Kondycyjne dodawanie klas w Tailwindzie nie jest tak oczywiste, jak mogłoby się wydawać. Tailwind generuje pliki CSS na podstawie klas które znajdzie w kodzie, więc dodawanie logiki warunkowej do klas może spowodować, że dana klasa nie zostanie uwzględniona przez Tailwinda w trakcie budowania strony.

Na szczęście możemy to łatwo rozwiązać za pomocą małego helpera:

import clsx, { type ClassValue } from "clsx";
import { twMerge } from "tailwind-merge";

/** Utility function to add Tailwind classes conditionally */
export function cn(...inputs: ClassValue[]) {
  return twMerge(clsx(inputs));
}

Przykład użycia w komponencie Reacta:

import { cn } from "./utils/cn";

export function Button({ variant = "primary" }) {
  return (
    <button
      className={cn("px-4 py-2 rounded-md", {
        "bg-blue-500 text-white": variant === "primary", // klasy dodane tylko wtedy, gdy "variant" jest równy "primary"
        "bg-gray-200 text-gray-800": variant === "secondary", // klasy dodane tylko wtedy, gdy "variant" jest równy "secondary"
      })}
    >
      Click me
    </button>
  );
}

👉 Więcej informacji o tym helperze możecie znaleźć tutaj oraz tutaj.

Losowy shortKolejny short: Tailwind