Vue3 では、多くの場合、コンポーネント内でクラス名を動的に生成する必要があります。ユーザー操作に応じて要素のスタイルを変換したり、リスト内の項目をレンダリングするときに特定の項目にクラス名を追加したりするなどです。
そのような場合、classnames 関数は非常に便利なツールであり、より便利かつ柔軟にクラス名を生成するのに役立ちます。
この記事ではclassnames関数の使い方とVue3での使い方を詳しく紹介します。
クラス名関数とは何ですか?
classnames 関数は、複数のクラス名文字列を 1 つのクラス名文字列に結合できる Javascript ライブラリです。
以下は簡単な例です:
import classNames from 'classnames'; const isActive = true; const classNamesString = classNames('button', { 'is-active': isActive }); console.log(classNamesString); // "button is-active"
上記のコードでは、classnames 関数を使用して 2 つのクラス名文字列 'button'
と 'is-active'
は 'button is-active'
のクラス名文字列にマージされます。
classNames
関数は任意の数のパラメータを受け入れます。クラス名の文字列に加えて、オブジェクトをパラメータとして受け取ることもできます。このオブジェクトには複数のキーと値のペアが含まれており、キーはクラス名の文字列、値はブール値です。ブール値が true の場合、対応するクラス名が最終出力クラス名文字列に含まれます。ブール値が false の場合、対応するクラス名は無視されます。
上記の例では、オブジェクト { 'is-active': isActive }
を通じて 'is-active'
という名前のクラス名を指定します。その値は次のとおりです。 ###真実###。したがって、isActive
変数が true の場合、最終的なクラス名文字列にはクラス名 'is-active'
が含まれます。 classnames 関数は複数のパラメーターを受け取ることもでき、各パラメーターはクラス名の文字列またはオブジェクトになります。このようにして、複数のクラス名文字列とオブジェクトを組み合わせて、複雑なクラス名文字列を生成できます。
以下はより複雑な例です:
import classNames from 'classnames'; const size = 'small'; const color = 'blue'; const disabled = true; const classNamesString = classNames( 'button', { 'is-disabled': disabled }, `${color}-background`, `${size}-text` ); console.log(classNamesString); // "button is-disabled blue-background small-text"
上記のコードでは、オブジェクト
{ 'is-disabled':disabled } を通じて名前を指定します。クラス名は 'is-disabled'
、その値は true
です。したがって、disabled
変数が true の場合、最終的なクラス名文字列にはクラス名 'is-disabled'
が含まれます。 オブジェクトに加えて、文字列を classnames 関数に直接渡すこともできます。上記のコードでは、変数
と ${size}-text
を持つ 2 つの文字列を classnames 関数に渡し、これらの文字列をクラス名として含めます。最終出力クラス名文字列内の文字列。 Vue3 で classnames 関数を使用するにはどうすればよいですか?
Vue3 では、classnames 関数の使用は非常に簡単です。 classnames 関数をコンポーネントにインポートし、それをレンダリングする必要がある要素に適用するだけです。
次は、classnames 関数を使用して要素のクラス名を生成するコンポーネントの例です:
<template> <div :class="[ 'button', classNames({ 'is-active': isActive, 'is-disabled': isDisabled }) ]" > {{ text }} </div> </template> <script> import { defineComponent } from 'vue'; import classNames from 'classnames'; export default defineComponent({ props: { text: String, isActive: Boolean, isDisabled: Boolean }, setup(props) { return { classNames }; } }); </script>
上記のコードでは、Vue3 のクラス バインディングを使用して要素を動的に生成します。クラス名文字列
'button' と classnames 関数を呼び出す式を含む配列を :class
に渡します。 classnames 関数を呼び出すときは、2 つのキーと値のペアを含むオブジェクトを渡します。 2 つのキーは
と 'is-disabled'
で、その値はそれぞれ isActive
と isDisabled
です。 . これら 2 つのコンポーネントのプロパティ。これらのプロパティが true の場合、対応するクラス名が最終出力クラス名文字列に含まれます。 秘訣は、classnames 関数をコンポーネントの setup() 関数にアタッチし、それをリアクティブ オブジェクトとして返すことです。このようにして、この関数はコンポーネントのテンプレートで直接参照できます。
結論
classnames 関数は非常に便利な Javascript ライブラリであり、クラス名の文字列をより便利かつ柔軟に生成するのに役立ちます。 Vue3 では、classnames 関数を使用して要素のクラス名を動的にレンダリングすることが簡単にできます。
以上がVue3のclassnames関数の詳細解説:柔軟なクラス名の描画方法の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。