溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

vue中為什么不建議使用空字符串作為className

發(fā)布時間:2021-09-24 09:20:05 來源:億速云 閱讀:116 作者:柒染 欄目:開發(fā)技術

本篇文章為大家展示了vue中為什么不建議使用空字符串作為className,內(nèi)容簡明扼要并且容易理解,絕對能使你眼前一亮,通過這篇文章的詳細介紹希望你能有所收獲。

    在我們用三元表達式給DOM元素設置class時,使用空字符串,會導致渲染出一個沒有值的空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
      }
    }

    這時,渲染結果如下

    <div class></div>
    <!-- ? 空的class -->

    如果isBold為true,渲染結果如下

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

    情況2:使用null

    看看使用null的渲染結果

    <div :class="isBold ? 'bold' : null"></div>
    data() {
      return {
        isBold: false
      }
    }

    渲染結果如下

    <div></div>
    <!-- ? 很好 無空class>

    如果isBold為false,渲染結果如下

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

    情況3:使用undefined

    undefined和null的效果一樣

    <div :class="isBold ? 'bold' : undefined"></div>
    <div></div>
    <!-- ? 很好 無空class>

    關于False值

    當isBold的值為以下值時,三元表達式返回的也是假值

    false
    undefined
    null
    NaN
    0
    "" or '' or `` (empty string)

    使用對象的形式綁定class

    使用對象的形式更加可讀

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

    但三元表達式最佳的用處是在綁定復雜的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ù)組綁定的語法去設置class

    空class就一定不對嗎?

    在W#C的標準中, 空class也是可以用的

    <!-- 無錯誤 -->
    <div class>...</div>
    
    <!-- 無錯誤 -->
    <div>...</div>

    HTML的語法用也沒要求不準使用空的屬性

    但是,為了代碼的可讀性,建議大家不要使用空屬性,特別是在需要操作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.

    上述內(nèi)容就是vue中為什么不建議使用空字符串作為className,你們學到知識或技能了嗎?如果還想學到更多技能或者豐富自己的知識儲備,歡迎關注億速云行業(yè)資訊頻道。

    向AI問一下細節(jié)

    免責聲明:本站發(fā)布的內(nèi)容(圖片、視頻和文字)以原創(chuàng)、轉載和分享為主,文章觀點不代表本網(wǎng)站立場,如果涉及侵權請聯(lián)系站長郵箱:is@yisu.com進行舉報,并提供相關證據(jù),一經(jīng)查實,將立刻刪除涉嫌侵權內(nèi)容。

    vue
    AI