我的编程空间,编程开发者的网络收藏夹
学习永远不晚

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

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

北京

  • 北京
  • 上海
  • 天津
  • 重庆
  • 河北
  • 山东
  • 辽宁
  • 黑龙江
  • 吉林
  • 甘肃
  • 青海
  • 河南
  • 江苏
  • 湖北
  • 湖南
  • 江西
  • 浙江
  • 广东
  • 云南
  • 福建
  • 海南
  • 山西
  • 四川
  • 陕西
  • 贵州
  • 安徽
  • 广西
  • 内蒙
  • 西藏
  • 新疆
  • 宁夏
  • 兵团
手机号立即预约

请填写图片验证码后获取短信验证码

看不清楚,换张图片

免费获取短信验证码

为什么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.class="lazy" data-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

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

下载Word文档到电脑,方便收藏和打印~

下载Word文档

猜你喜欢

为什么不在Python中使用+来连接字符串

本篇内容主要讲解“为什么不在Python中使用+来连接字符串”,感兴趣的朋友不妨来看看。本文介绍的方法操作简单快捷,实用性强。下面就让小编来带大家学习“为什么不在Python中使用+来连接字符串”吧!开始作为一名初学者,或者刚从使用“+”连
2023-06-16

mysql innodb为什么建议使用自增数字作为主键?

1.建议使用有序的自增ID作为主键MySQL InnoDB 引擎底层数据结构是 B+ 树,所谓的索引其实就是一颗 B+ 树,一个表有多少个索引就会有多少颗 B+ 树,mysql 中的数据都是按顺序保存在 B+ 树叶子节点上的(所以说索引本身是有序的)。主要目的
mysql innodb为什么建议使用自增数字作为主键?
2019-03-20

为什么在MySQL中不建议使用UTF-8

最近我遇到了一个 bug,我试着通过 Rails 在以“utf8”编码的 MariaDB 中保存一个 UTF-8 字符串,然后出现了一个离奇的错误:Incorrect string value: ‘\xF0\x9F\x98\x83 for
2022-05-16

为什么不建议在go项目中使用init()

前言 go的 init函数给人的感觉怪怪的,我想不明白聪明的 google团队为何要设计出这么一个“鸡肋“的机制。实际编码中,我主张尽量不要使用init函数。 首先来看看 init函数的作用吧。 init() 介绍 init()与包的初始化
2022-06-07

怎么在linux中使用shell判断字符串是否为空

今天就跟大家聊聊有关怎么在linux中使用shell判断字符串是否为空,可能很多人都不太了解,为了让大家更加了解,小编给大家总结了以下内容,希望大家根据这篇文章可以有所收获。help命令可以查看帮助help testLinux 下判断字符串
2023-06-09

为什么可以Python中使用f-string 连接字符串与数字

本篇文章为大家展示了为什么可以Python中使用f-string 连接字符串与数字,内容简明扼要并且容易理解,绝对能使你眼前一亮,通过这篇文章的详细介绍希望你能有所收获。下面以字符串和数字为例,看看强行操作会产生什么结果:>>> "Pyth
2023-06-06

如果搜索字符串不在 FIELD() 函数中作为参数提供的字符串列表中,MySQL 将返回什么?

假设如果搜索字符串不在FIELD()函数中作为参数提供的字符串列表中,那么MySQL将返回0作为输出。示例mysql> Select FIELD(Ram,New,Delhi);+----------------------------+
2023-10-22

当我将空字符串插入声明为 NOT NULL 的 MySQL 列时,数据类型起什么作用?

当我们将空字符串插入声明为 NOT NULL 的 MySQL 列时,结果集中空字符串的表示取决于数据类型。我们知道,在插入空字符串时,我们向 MySQL 提供整数表示为 INT 0 的值。现在,如果该列具有 INTEGER 数据类型,那么
2023-10-22

不知道为什么在尝试使用 f 字符串运行 SQL UPDATE 查询时出现语法错误

问题内容我正在尝试运行基本的 sql 查询来更新名为 bartonhill 的数据库中 schoolnum 的值,使用 f 字符串将值放入import sqlite3name = [input('enter your firstnam
不知道为什么在尝试使用 f 字符串运行 SQL UPDATE 查询时出现语法错误
2024-02-10

编程热搜

目录