温馨提示×

温馨提示×

您好,登录后才能下订单哦!

密码登录×
登录注册×
其他方式登录
点击 登录注册 即表示同意《亿速云用户服务条款》

vue中为什么不建议使用空字符串作为className

发布时间:2021-09-24 09:20:05 来源:亿速云 阅读:117 作者:柒染 栏目:开发技术

本篇文章为大家展示了vue中为什么不建议使用空字符串作为className,内容简明扼要并且容易理解,绝对能使你眼前一亮,通过这篇文章的详细介绍希望你能有所收获。

    在我们用三元表达式给DOM元素设置class时,使用空字符串,会导致渲染出一个没有值的空class, 为了避免这种情况出现,可以使用null来代替空字符串。

    <!-- ❌ -->
    <div :class="isBold ? 'bold' : ''">
    <!-- <div class> -->
    
    <!-- ✅ -->
    <div :class="isBold ? 'bold' : null">
    <!-- <div> -->

    比较空字符串''和null

    继续来分析上面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>

    造成上面这种情况的出现不是&&的问题,它只是用来做判断并返回值而已

    所以,如果我们想要使用&&时避免返回空class,最好用null或者undefined

    但我更推荐大家使用对象的或者数组绑定的语法去设置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.

    上述内容就是vue中为什么不建议使用空字符串作为className,你们学到知识或技能了吗?如果还想学到更多技能或者丰富自己的知识储备,欢迎关注亿速云行业资讯频道。

    向AI问一下细节

    免责声明:本站发布的内容(图片、视频和文字)以原创、转载和分享为主,文章观点不代表本网站立场,如果涉及侵权请联系站长邮箱:is@yisu.com进行举报,并提供相关证据,一经查实,将立刻删除涉嫌侵权内容。

    vue
    AI