文章详情

短信预约-IT技能 免费直播动态提醒

请输入下面的图形验证码

提交验证

短信预约提醒成功

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

2024-04-02 19:55

关注

在我们用三元表达式给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的文章就介绍到这了,更多相关vue 空字符串作为className内容请搜索编程网以前的文章或继续浏览下面的相关文章希望大家以后多多支持编程网!

阅读原文内容投诉

免责声明:

① 本站未注明“稿件来源”的信息均来自网络整理。其文字、图片和音视频稿件的所属权归原作者所有。本站收集整理出于非商业性的教育和科研之目的,并不意味着本站赞同其观点或证实其内容的真实性。仅作为临时的测试数据,供内部测试之用。本站并未授权任何人以任何方式主动获取本站任何信息。

② 本站未注明“稿件来源”的临时测试数据将在测试完成后最终做删除处理。有问题或投稿请发送至: 邮箱/279061341@qq.com QQ/279061341

软考中级精品资料免费领

  • 历年真题答案解析
  • 备考技巧名师总结
  • 高频考点精准押题
  • 2024年上半年信息系统项目管理师第二批次真题及答案解析(完整版)

    难度     813人已做
    查看
  • 【考后总结】2024年5月26日信息系统项目管理师第2批次考情分析

    难度     354人已做
    查看
  • 【考后总结】2024年5月25日信息系统项目管理师第1批次考情分析

    难度     318人已做
    查看
  • 2024年上半年软考高项第一、二批次真题考点汇总(完整版)

    难度     435人已做
    查看
  • 2024年上半年系统架构设计师考试综合知识真题

    难度     224人已做
    查看

相关文章

发现更多好内容

猜你喜欢

AI推送时光机
位置:首页-资讯-前端开发
咦!没有更多了?去看看其它编程学习网 内容吧
首页课程
资料下载
问答资讯