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 ツリービューの原理と使用法の分析

推薦する

Javascript を使用して、スライドバー効果のあるスライドナビゲーション プラグインを開発します。

目次1. はじめに2. 使用方法3. 開発プロセス1. モデル例2. イベントとアニメーション4. ...

Linux で指定された期間に数分ごとにタスク スケジュール crontab を自動的に実行する方法

まずコードを見てみましょう #/bin/sh datename=$(日付 +%Y%m%d-%H%M%...

MySQL における引用符とバックティックの違いと使い方の詳細な説明

序文そこでこのブログを書きました。このブログでは大物の記事からいくつかの知識も推奨しています。侵害が...

Nginx+Tomcat 負荷分散クラスタのインストールと構成のケースの詳細な説明

目次序文1. Nginx+Tomcat 2. Nginxサーバーを構成する3. Tomcatアプリケ...

スライダー間隔コンポーネントのネイティブ js 実装

この記事の例では、スライダー間隔コンポーネントを実装するためのjsの具体的なコードを参考までに共有し...

MySQL にテーブルデータを挿入するときに中国語の文字化けが発生する問題を解決する方法

1. 問題開発中に、他のデータベースから MySQL データベース テーブルにデータを挿入すると、次...

SQL 文を使用してデータを収集する場合の sum 関数と count 関数の if 判定条件の使用法の説明

まず、例を挙げてみましょう(読みたくない場合は、以下の要約だけ読んでください)。 order_typ...

kubernetes1.5.2 から kubernetes1.10 にアップグレードする際の主要な設定変更記録

この記事では、kubernetes1.5.2 から kubernetes1.10 にアップグレードす...

Windows 10 での MySQL 8.0.19 のインストールと設定のチュートリアル

来学期にMySQLを勉強します。事前に自宅で練習していませんでした。インストールに時間がかかるとは思...

nginx で SSL 証明書を設定して https サービスを実装する方法

前回の記事では、openssl を使用して無料の証明書を生成した後、この証明書を使用してローカル ノ...

CentOS7でMySQL 5.7をアンインストールする方法

MySQLに何がインストールされているか確認する rpm -qa | grep -i mysql n...

Vue はウェブページの言語切り替えの国際化を実装します

1. 基本的な手順1: yarn add vue-i18nをインストールするこのパスに新しい .js...

HTML の表の行と列を結合する問題の解決策の詳細な説明

私たちが構築しようとしていたウェブサイトには、長い文章だけでなく、多数の表も含まれており、表のレイア...

JS のオブジェクトリテラルの詳細な説明

目次序文1. オブジェクト構築にプロトタイプを設定する1.1 __proto__ の使用における特殊...

10 HTML テーブル関連タグ

実際、多くの人が「テーブルは絶対に使用すべきではないと聞いたことがある」と言いますが、これは絶対に間...