Rumah > hujung hadapan web > View.js > teks badan

Bagaimana untuk mengelakkan kelas kosong apabila Vue mengikat kelas secara dinamik!

青灯夜游
Lepaskan: 2021-12-09 10:16:43
ke hadapan
1889 orang telah melayarinya

Bagaimana untuk mengelakkan kelas kosong dalam kelas terikat secara dinamik dalam Vue? Artikel berikut akan memperkenalkan kepada anda bagaimana untuk mengelakkan perangkap saya harap ia akan membantu anda.

Bagaimana untuk mengelakkan kelas kosong apabila Vue mengikat kelas secara dinamik!

Lepasi rentetan kosong, yang boleh mengakibatkan kelas kosong dalam output DOM. Dalam pengendali ternary, kita boleh mengembalikan "null", yang memastikan tiada kelas kosong dalam DOM. [Cadangan berkaitan: "Tutorial vue.js"]

<!-- ❌ -->
<div :class="isBold ? &#39;bold&#39; : &#39;&#39;">
<!-- <div class> -->

<!-- ✅ -->
<div :class="isBold ? &#39;bold&#39; : null">
<!-- <div> -->
Salin selepas log masuk

Pilihan 1: Gunakan rentetan kosong &#39;&#39;

Kami menggunakan operator ternary mengikut isBold ialah true atau falsy untuk menetapkan kelas yang sesuai secara bersyarat. Dalam contoh di bawah, jika isBold ialah 真值, kelas ditetapkan kepada bold. Jika ia 虚值, ia akan mengembalikan rentetan kosong &#39;&#39;.

html

<div :class="isBold ? &#39;bold&#39; : &#39;&#39;"></div>
Salin selepas log masuk

js

data() {
  return {
    isBold: false
  }
}
Salin selepas log masuk
Salin selepas log masuk

Perenderan akhir kelihatan seperti:

<div class></div>
<!-- 啊! 空的class -->
Salin selepas log masuk

Jika isBold ialah true, ia akan dipaparkan sebagai:

<div class="bold"></div>
Salin selepas log masuk
Salin selepas log masuk

Pilihan 2: Gunakan null

Seterusnya, mari lihat jika kita menetapkan nilai kepada kelas sebagai nullApa yang berlaku.

html

<div :class="isBold ? &#39;bold&#39; : null"></div>
Salin selepas log masuk

js

data() {
  return {
    isBold: false
  }
}
Salin selepas log masuk
Salin selepas log masuk

Perenderan akhir kelihatan seperti:

<div></div>
<!-- Nice, 没有空的 class -->
Salin selepas log masuk

Jika isBold ialah true, ia akan dipaparkan sebagai:

<div class="bold"></div>
Salin selepas log masuk
Salin selepas log masuk

Pilihan 3: Gunakan undefined

Sebenarnya, undefined juga boleh berfungsi seperti biasa

<div :class="isBold ? &#39;bold&#39; : undefined"></div>
Salin selepas log masuk
<div></div>
<!-- Nice, no empty class -->
Salin selepas log masuk

Nilai maya

Berikut ialah nilai maya dalam JS. Jadi jika isBold ialah mana-mana nilai ini, ia akan mengembalikan kes palsu pengendali ternary.

false
undefined
null
NaN
0
"" or &#39;&#39; or `` (empty string)
Salin selepas log masuk

Memfaktorkan semula menggunakan sintaks objek

Untuk contoh di atas, adalah lebih baik untuk menggunakan sintaks objek:

<div :class="{ bold: isBold }"></div>
Salin selepas log masuk

Versi yang lebih baik menggunakan operator ternary A senario yang baik ialah menyediakan berbilang kelas.

<div :class="isActive ? &#39;underline bold&#39; : null"></div>
Salin selepas log masuk

Menggunakan kelas tetapan &&

Mari lihat senario lain untuk melihat sama ada ia berfungsi.

<div :class="isBold && &#39;bold&#39;"></div>
Salin selepas log masuk
Salin selepas log masuk
Salin selepas log masuk

&& bukan sahaja pengendali logik, ia sebenarnya menghasilkan nilai. Oleh itu, jika isBold benar, kembalikan bold. Walau bagaimanapun, jika isBold adalah khayalan, nilai isBold dikembalikan.

menekankan perkara terakhir - ia akan mengembalikan nilai isBold. Jadi bergantung pada nilai isBold, masalah asal kita mempunyai kelas kosong masih wujud. Mari lihat beberapa contoh.

Contoh A: isBold sama dengan false

<div :class="isBold && &#39;bold&#39;"></div>
Salin selepas log masuk
Salin selepas log masuk
Salin selepas log masuk

Ini masih akan menjadikan kelas kosong

<div class></div>
Salin selepas log masuk

Contoh B: isBold sama dengan null

<div :class="isBold && &#39;bold&#39;"></div>
Salin selepas log masuk
Salin selepas log masuk
Salin selepas log masuk

Memandangkan isBold ialah null, kelas kosong itu hilang.

<div></div>
Salin selepas log masuk

&&Betul - sebenarnya, ia hanya menjalankan tugasnya. Cuma kita memerlukan nilai pulangan tertentu. Dalam aspek lain, kita tidak boleh membuat kelas kosong, kita mesti lulus null atau undefined. Mana-mana nilai palsu lain selain daripada kedua-dua ini tidak akan berfungsi. Memandangkan ini mudah terlepas, saya lebih suka pengendali ternary yang lebih eksplisit, atau hanya sintaks objek.

Adakah atribut kelas kosong salah?

Saya cuba menggunakan Perkhidmatan Pengesahan Penanda W3C untuk menyemak, dan kedua-dua sintaks sememangnya lulus.

<!-- Pass -->
<div class>...</div>

<!-- Pass -->
<div>...</div>
Salin selepas log masuk

Menggali ke dalam Standard HTML: Standard HTML: Sintaks atribut kosong, yang nampaknya tidak membenarkan atribut kosong.

Tetapi...

Tetapi kesahihan ini tidak terpakai kepada id. Kerana id kosong dianggap tidak sah.

<!-- Fail -->
<div id>...</div>

<!-- Fail -->
<div id="">...</div>

<!-- Pass -->
<div id="name">...</div>
Salin selepas log masuk
❌ Ralat: ID tidak boleh menjadi rentetan kosong.

Ringkasan

Memandangkan kelas kosong dianggap sah dan spec tidak membantahnya, semuanya terpulang kepada anda untuk memilih. Ia adalah pangkalan kod anda dan anda memutuskan perkara yang perlu dilakukan dengannya. Jika anda ingin memastikan output HTML anda bersih, anda boleh menghantar null kepada pengendali ternary Vue. Jika ia tidak penting untuk anda, lupakannya. Tiada jawapan yang betul di sini, semuanya bergantung pada pilihan anda

Alamat asal bahasa Inggeris: https://www.samanthaming.com/tidbits/96-vue-use-null-for-class/

Pengarang: Samantha Ming

Penterjemah: Front-end Xiaozhi

Untuk lebih banyak pengetahuan berkaitan pengaturcaraan, sila lawati: Pengenalan kepada Pengaturcaraan ! !

Atas ialah kandungan terperinci Bagaimana untuk mengelakkan kelas kosong apabila Vue mengikat kelas secara dinamik!. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

Label berkaitan:
vue
sumber:segmentfault.com
Kenyataan Laman Web ini
Kandungan artikel ini disumbangkan secara sukarela oleh netizen, dan hak cipta adalah milik pengarang asal. Laman web ini tidak memikul tanggungjawab undang-undang yang sepadan. Jika anda menemui sebarang kandungan yang disyaki plagiarisme atau pelanggaran, sila hubungi admin@php.cn
Tutorial Popular
Lagi>
Muat turun terkini
Lagi>
kesan web
Kod sumber laman web
Bahan laman web
Templat hujung hadapan