Vue で className として空の文字列を使用することはなぜ推奨されないのですか?

Vue で className として空の文字列を使用することはなぜ推奨されないのですか?

三項式を使用して DOM 要素のクラスを設定する場合、空の文字列を使用すると、値がレンダリングされない空のクラスが作成されます。これを回避するには、空の文字列の代わりに null を使用します。

<!-- ❌ -->
<div :class="isBold ? '太字' : ''">
<!-- <div クラス> -->

<!-- ✅ -->
<div :class="isBold ? '太字' : null">
<!-- <div> -->

空の文字列 '' と null を比較する

上記の2行のコードを分析し続けます

ケース1: 空の文字列を使用する ''

三項演算子を使用して、クラスを要素にバインドするかどうかを決定します。isBold が true の場合は、bold を返します。それ以外の場合は、'' を返します。

<div :class="isBold ? '太字' : ''"></div>
データ() {
  戻る {
    太字: false
  }
}

このときのレンダリング結果は以下のようになります

<div クラス></div>
<!-- 😱 空のクラス -->

isBoldがtrueの場合、レンダリング結果は次のようになります。

<div class="bold"></div>

ケース2: nullの使用

nullを使用したレンダリング結果を見る

<div :class="isBold ? '太字' : null"></div>

データ() {
  戻る {
    太字: false
  }
}

レンダリング結果は次のとおりです

<div></div>
<!-- ✅ 非常に良い、空のクラスはありません>

isBoldがfalseの場合、レンダリング結果は次のようになります。

<div class="bold"></div>

ケース3: undefinedの使用

undefinedはnullと同じ効果を持つ

<div :class="isBold ? '太字' : 未定義"></div>

<div></div>
<!-- ✅ 非常に良い、空のクラスはありません>

False値について

isBoldの値が次の場合、三項式も偽値を返します。

間違い
未定義
ヌル
非N
0
"" または '' または `` (空の文字列)

オブジェクトを使用してクラスをバインドする

オブジェクトを使用すると読みやすくなります

<div :class="{ bold: isBold }"></div>

しかし、三項式が最も適しているのは、複雑なクラスをバインドするときです。

<div :class="isActive ? '下線太字' : null"></div>

&& を使用してクラスをバインドする

別の状況を見てみましょう

<div :class="isBold && '太字'"></div>

&& は論理演算子であるだけでなく、値を返すこともできます。上記のコードのように、isBold が true の場合は bold を返しますが、isBold が false の場合はどうなるでしょうか。

ケース1: isBold が false

<div :class="isBold && '太字'"></div>

今回は空のクラスが返されます。

<div クラス></div>

ケース2: isBold が null である

<div :class="isBold && '太字'"></div>

nullの場合、空のクラスは存在しません

<div></div>

ケース3: isBold が未定義

<div :class="isBold && '太字'"></div>

定義されていない場合は空のクラスは存在しません

<div></div>

上記の状況は && によって発生したものではなく、判断を行って値を返すためだけに使用されています。

したがって、&& を使用するときに空のクラスが返されることを避けたい場合は、null または undefined を使用するのが最適です。

ただし、クラスを設定するには、オブジェクトまたは配列バインディング構文を使用することをお勧めします。

クラスが空いているのは間違っているでしょうか?

W#C 標準では、空のクラスも許可されます。

<!-- エラーなし -->
<div クラス>...</div>

<!-- エラーなし -->
<div>...</div>

HTML 構文では空の属性の使用は禁止されていません。

ただし、コードの読みやすさのために、特に DOM 属性を操作して判断する必要がある場合は、空の属性を使用しないことをお勧めします。

空のプロパティは微妙なエラーを引き起こす可能性がある

e.target.classList

e.クラス名

画像ソース

...

しかし...
空の ID 属性は許可されません。

<!-- エラー -->
<div id>...</div>

<!-- エラー -->
<div id="">...</div>

<!-- 正解 -->
<div id="name">...</div>

❌ エラー: ID は空の文字列であってはなりません。

これで、vue で空の文字列を className として使用することが推奨されない理由についての説明は終わりです。vue で空の文字列を className として使用することの詳細については、123WORDPRESS.COM の以前の記事を検索するか、次の関連記事を引き続き参照してください。今後とも 123WORDPRESS.COM をよろしくお願いいたします。

以下もご興味があるかもしれません:
  • null投稿パラメータの問題を解決するために、vueベースのaxiosコンポーネントを追加します。

<<:  MySQLデータベーストリガーの詳細な説明

>>:  GTK ツリービューの原理と使用法の分析

推薦する

js でクラスセレクターと名前属性セレクターを実装する手順の例

jQuery の登場により、DOM の操作効率が大幅に向上し、開発がより高いレベルに引き上げられまし...

React-Native環境のセットアップと基本的な紹介

環境の準備1. 環境構築React Native 中国語ウェブサイト2. 開発ツール フロントエンド...

ウェブページでグレーまたはブラックモードを実現するための CSS3 フィルターコード

フロントエンドcss3 フィルターは、Web ページのグレー効果を実現できるだけでなく、ナイト モー...

Linuxカーネルのアクセス制御セキュリティを強化する方法

背景以前、当社のプロジェクト チームは、Windows、Linux、macOS の 3 つの主要なオ...

Vue3.0はチェックボックスコンポーネントのカプセル化を実装します

この記事では、チェックボックスコンポーネントのカプセル化を実装するためのvue3.0の具体的なコード...

MySQL インデックスがソートに与える影響の分析例

この記事では、例を使用して、MySQL インデックスがソートに与える影響を説明します。ご参考までに、...

Vueは要素ツリーコントロールを通じてツリーテーブルを実装します

目次実装効果図依存関係をインストールするカスタムツリーコントロールその他の実装要約するVueでは、要...

MySQL 8の新機能ウィンドウ関数の役割

MySQL 8.0 の新機能は次のとおりです。 Unicode 9.0 をすぐに完全にサポートウィン...

HTMLからPDFへの変換のための純粋なクライアント側と純粋なサーバー側の実装ソリューション

必要ユーザーがフォームに入力して「保存」をクリックすると、PDF ドキュメントを直接ダウンロードでき...

Dockerコンテナを作成、起動、停止する方法

1. コンテナとは、独立して実行されるアプリケーション、またはアプリケーションのグループとその動作環...

MySQL binlog を開く手順

Binlog は、MySQL データの変更を記録するために使用されるバイナリ ログ ファイルです。B...

MySQLクエリキャッシュの簡単な使い方の詳細な説明

目次1. クエリキャッシュの実装プロセス2. クエリキャッシュを構成する3. クエリキャッシュを有効...

JavaScriptの浅いコピーと深いコピーについての簡単な説明

目次1. 直接譲渡2. 浅いコピー3. ディープコピー1. JSONオブジェクトメソッド2. 再帰コ...

実用的な基本的な Linux sed コマンドのサンプルコード

Linux ストリーム エディターは、データ センターでスクリプトを実行するのに便利な方法です。これ...