为什么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,否则,返回

html代码:

<div :class="isBold ? 'bold' : ''"></div>

 js代码:

data() {
  return {
    isBold: false
  }
}

这时,渲染结果如下

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

如果isBoldtrue,渲染结果如下

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

情况2:使用null

看看使用null的渲染结果

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

渲染结果如下

<div></div>
<!--  很好 无空class>

如果isBoldfalse,渲染结果如下

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

情况3:使用undefined

undefinednull的效果一样

<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:isBoldfalse

<div :class="isBold && 'bold'"></div>

这个时候回返回空class

<div class></div>

案例2:isBoldnull

<div :class="isBold && 'bold'"></div>

null时不会有空class

<div></div>

案例3:isBoldundefined

<div :class="isBold && 'bold'"></div>

undefined时也不会有空class

<div></div>

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

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

但我更推荐大家使用对象的或者数组绑定的语法去设置class

  • 4
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值