為什么vue中不建議使用空字符串作為className
在我們用三元表達(dá)式給DOM元素設(shè)置class時,使用空字符串,會導(dǎo)致渲染出一個沒有值的空class, 為了避免這種情況出現(xiàn),可以使用null來代替空字符串。
<!-- ❌ --> <div :class="isBold ? 'bold' : ''"> <!-- <div class> --> <!-- ✅ --> <div :class="isBold ? 'bold' : null"> <!-- <div> -->
比較空字符串''和null
繼續(xù)來分析上面2行代碼
情況1:使用空字符串''
我們使用三元操作符,來決定是否給元素綁定class, isBold為true時綁定,返回bold,否則,返回''
<div :class="isBold ? 'bold' : ''"></div>
data() {
return {
isBold: false
}
}
這時,渲染結(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的值為以下值時,三元表達(dá)式返回的也是假值
false
undefined
null
NaN
0
"" or '' or `` (empty string)
使用對象的形式綁定class
使用對象的形式更加可讀
<div :class="{ bold: isBold }"></div>
但三元表達(dá)式最佳的用處是在綁定復(fù)雜的class時
<div :class="isActive ? 'underline bold' : null"></div>
使用 &&綁定class
來看看另外一種情況
<div :class="isBold && 'bold'"></div>
&& 不僅是一個邏輯操作符,它同樣可以返回值,正如上面的代碼,如果isBold為真,它會返回bold,但是isBold為假的時候呢?
案例1:isBold為false
<div :class="isBold && 'bold'"></div>
這個時候回返回空class
<div class></div>
案例2:isBold為null
<div :class="isBold && 'bold'"></div>
為null時不會有空class
<div></div>
案例3:isBold為undefined
<div :class="isBold && 'bold'"></div>
為undefined時也不會有空class
<div></div>
造成上面這種情況的出現(xiàn)不是&&的問題,它只是用來做判斷并返回值而已
所以,如果我們想要使用&&時避免返回空class,最好用null或者undefined
但我更推薦大家使用對象的或者數(shù)組綁定的語法去設(shè)置class
空class就一定不對嗎?
在W#C的標(biāo)準(zhǔn)中, 空class也是可以用的
<!-- 無錯誤 --> <div class>...</div> <!-- 無錯誤 --> <div>...</div>
HTML的語法用也沒要求不準(zhǔn)使用空的屬性
但是,為了代碼的可讀性,建議大家不要使用空屬性,特別是在需要操作DOM屬性做判斷時
空的屬性很容易造成難以察覺的錯誤
e.target.classList
e.className
img.src
...
但是...
空的id屬性是不被允許的
<!-- 錯誤 --> <div id>...</div> <!-- 錯誤 --> <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)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
相關(guān)文章
一篇文章教你實現(xiàn)VUE多個DIV,button綁定回車事件
這篇文章主要介紹了VUE多個DIV綁定回車事件,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧2021-10-10
Vant實現(xiàn)上傳多個圖片或視頻,更改視頻預(yù)覽圖
這篇文章主要介紹了Vant實現(xiàn)上傳多個圖片或視頻,更改視頻預(yù)覽圖,具有很好的參考價值,希望對大家有所幫助。如有錯誤或未考慮完全的地方,望不吝賜教2022-10-10
vue中el-table實現(xiàn)自動吸頂效果(支持fixed)
本文主要介紹了vue中el-table實現(xiàn)自動吸頂效果,文中通過示例代碼介紹的非常詳細(xì),具有一定的參考價值,感興趣的小伙伴們可以參考一下2021-09-09
Vue異步更新DOM及$nextTick執(zhí)行機制解讀
這篇文章主要介紹了Vue異步更新DOM及$nextTick執(zhí)行機制解讀,具有很好的參考價值,希望對大家有所幫助。如有錯誤或未考慮完全的地方,望不吝賜教2023-03-03

