azukiazusa

azukiazusa

クラス名の結合をする軽量ライブラリの clsx

clsx は、複数のクラス名を結合するための軽量ライブラリです。条件によってクラスを付け替えたり、グルーピングをする際に簡潔に記述できます。

azukiazusa

azukiazusa

clsx は任意の数の引数を受け取り、それらを結合して返します。また、undefinednull などの falsy な値を無視します。

import clsx from "clsx";
 
const rounded = false
const className = clsx("text-white", "bg-blue-500", rounded && "rounded");
// => "text-white bg-blue-500"
azukiazusa

azukiazusa

オブジェクト形式でクラス名を渡すこともできます。この場合、値が truthy なプロパティのキーがクラス名として追加されます。

const className = clsx({
  "bg-blue-500 text-white": variant === "primary",
  "bg-gray-500 text-white": variant === "secondary",
  "bg-white text-gray-500": variant === "default",
});
azukiazusa

azukiazusa

引数を配列として渡すこともできます。この形式でクラス名を渡すことで、例えば text や bg などのプレフィックスごとにグルーピングできるので、よりみとおしが良くなります。

<button className={clsx(
  ["text-white", "dark:text-black"],
  ["bg-blue-500", "dark:bg-blue-900"],
  ["px-4", "py-2"],
)}>