為什么vue中不建議使用空字符串作為className
在我們用三元表達(dá)式給DOM元素設(shè)置class時(shí),使用空字符串,會(huì)導(dǎo)致渲染出一個(gè)沒有值的空class, 為了避免這種情況出現(xiàn),可以使用null來代替空字符串。
<!-- ❌ --> <div :class="isBold ? 'bold' : ''"> <!-- <div class> --> <!-- ✅ --> <div :class="isBold ? 'bold' : null"> <!-- <div> -->
比較空字符串''和null
繼續(xù)來分析上面2行代碼
情況1:使用空字符串''
我們使用三元操作符,來決定是否給元素綁定class, isBold為true時(shí)綁定,返回bold,否則,返回''
<div :class="isBold ? 'bold' : ''"></div>
data() { return { isBold: false } }
這時(shí),渲染結(jié)果如下
<div class></div> <!-- 😱 空的class -->
如果isBold為true,渲染結(jié)果如下
<div class="bold"></div>
情況2:使用null
看看使用null的渲染結(jié)果
<div :class="isBold ? 'bold' : null"></div>
data() { return { isBold: false } }
渲染結(jié)果如下
<div></div> <!-- ✅ 很好 無空class>
如果isBold為false,渲染結(jié)果如下
<div class="bold"></div>
情況3:使用undefined
undefined和null的效果一樣
<div :class="isBold ? 'bold' : undefined"></div>
<div></div> <!-- ✅ 很好 無空class>
關(guān)于False值
當(dāng)isBold的值為以下值時(shí),三元表達(dá)式返回的也是假值
false
undefined
null
NaN
0
"" or '' or `` (empty string)
使用對(duì)象的形式綁定class
使用對(duì)象的形式更加可讀
<div :class="{ bold: isBold }"></div>
但三元表達(dá)式最佳的用處是在綁定復(fù)雜的class時(shí)
<div :class="isActive ? 'underline bold' : null"></div>
使用 &&綁定class
來看看另外一種情況
<div :class="isBold && 'bold'"></div>
&& 不僅是一個(gè)邏輯操作符,它同樣可以返回值,正如上面的代碼,如果isBold為真,它會(huì)返回bold,但是isBold為假的時(shí)候呢?
案例1:isBold為false
<div :class="isBold && 'bold'"></div>
這個(gè)時(shí)候回返回空class
<div class></div>
案例2:isBold為null
<div :class="isBold && 'bold'"></div>
為null時(shí)不會(huì)有空class
<div></div>
案例3:isBold為undefined
<div :class="isBold && 'bold'"></div>
為undefined時(shí)也不會(huì)有空class
<div></div>
造成上面這種情況的出現(xiàn)不是&&的問題,它只是用來做判斷并返回值而已
所以,如果我們想要使用&&時(shí)避免返回空class,最好用null或者undefined
但我更推薦大家使用對(duì)象的或者數(shù)組綁定的語(yǔ)法去設(shè)置class
空class就一定不對(duì)嗎?
在W#C的標(biāo)準(zhǔn)中, 空class也是可以用的
<!-- 無錯(cuò)誤 --> <div class>...</div> <!-- 無錯(cuò)誤 --> <div>...</div>
HTML的語(yǔ)法用也沒要求不準(zhǔn)使用空的屬性
但是,為了代碼的可讀性,建議大家不要使用空屬性,特別是在需要操作DOM屬性做判斷時(shí)
空的屬性很容易造成難以察覺的錯(cuò)誤
e.target.classList
e.className
img.src
...
但是...
空的id屬性是不被允許的
<!-- 錯(cuò)誤 --> <div id>...</div> <!-- 錯(cuò)誤 --> <div id="">...</div> <!-- 正確 --> <div id="name">...</div>
❌ Error: An ID must not be the empty string.
到此這篇關(guān)于為什么vue中不建議使用空字符串作為className的文章就介紹到這了,更多相關(guān)vue 空字符串作為className內(nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
相關(guān)文章
一篇文章教你實(shí)現(xiàn)VUE多個(gè)DIV,button綁定回車事件
這篇文章主要介紹了VUE多個(gè)DIV綁定回車事件,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過來看看吧2021-10-10vue.js中toast用法及使用toast彈框的實(shí)例代碼
這篇文章主要介紹了vue.js中toast用法及使用toast彈框的實(shí)例代碼,本文給大家介紹的非常詳細(xì),具有一定的參考借鑒加載,需要的朋友可以參考下2018-08-08Vant實(shí)現(xiàn)上傳多個(gè)圖片或視頻,更改視頻預(yù)覽圖
這篇文章主要介紹了Vant實(shí)現(xiàn)上傳多個(gè)圖片或視頻,更改視頻預(yù)覽圖,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教2022-10-10調(diào)用createApp?時(shí)Vue工作過程原理
這篇文章主要為大家介紹了調(diào)用createApp?時(shí)Vue工作過程原理解析,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪2023-01-01vue中el-table實(shí)現(xiàn)自動(dòng)吸頂效果(支持fixed)
本文主要介紹了vue中el-table實(shí)現(xiàn)自動(dòng)吸頂效果,文中通過示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下2021-09-09vue項(xiàng)目關(guān)閉eslint校驗(yàn)
eslint是一個(gè)JavaScript的校驗(yàn)插件,通常用來校驗(yàn)語(yǔ)法或代碼的書寫風(fēng)格。這篇文章主要介紹了vue項(xiàng)目關(guān)閉eslint校驗(yàn),需要的朋友可以參考下2018-03-03Vue異步更新DOM及$nextTick執(zhí)行機(jī)制解讀
這篇文章主要介紹了Vue異步更新DOM及$nextTick執(zhí)行機(jī)制解讀,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教2023-03-03vue.js國(guó)際化 vue-i18n插件的使用詳解
本篇文章主要介紹了vue.js國(guó)際化 vue-i18n插件的使用詳解,具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下2017-07-07vue3+vite2中使用svg的方法詳解(親測(cè)可用)
vue2的時(shí)候使用的是字體圖標(biāo),缺點(diǎn)就是比較單一,到了vue3,相信瀏覽器的性能起來,所以這里記錄一下,下面這篇文章主要給大家介紹了關(guān)于vue3+vite2中使用svg的相關(guān)資料,需要的朋友可以參考下2022-08-08