使用 null 而不是传递一个空字符串,这可能会导致DOM输出中的一个空类。在你的三元操作符中,你可以返回 null。这将确保DOM中没有空类:

比较空字符串 '' 和 null

让我们深入研究上面的示例,然后更全面地了解正在发生的事情。

(1) 方案1:使用空字符串 '' /

我们使用三元运算符根据 isBold 是true还是falsy来有条件地设置适当的类。在此示例中,我们要说的是,如果 isBold 是 true 的,它将把该类设置为 bold。如果是 false 的,它将返回一个空字符串 “”。 :class 是 v-bind:class 的缩写。

data() {

return {

isBold: false

}

}

这将渲染:

如果 isBold 为 true ,它将渲染:

(2) 方案2:使用 null /

好吧,让我们看看如果将 null 分配为类的值会发生什么。

data() {

return {

isBold: false

}

}

这将渲染:

如果 isBold 为 true ,它将渲染:

(3) 方案3:使用undefined /

顺便说一句, undefined 也可以工作

false值

提醒一下,这些是JavaScript中的false值。因此,如果 isBold 是这些值中的任何一个,它将返回三元运算符的false条件。

false

undefined

null

NaN

0

"" or '' or `` (empty string)

使用对象语法重构

在我的简单示例中,使用对象语法可能更好一些,如下所示:

我猜使用三元运算符的一个更好的例子是设置多个类。

题外话:当我创作Demo时,我总是尽量让事情变得简单。其中一种方法就是尽可能地减少视觉噪音。因此,我的例子有时会过于简化,希望读者能够在不做太多处理的情况下立即掌握概念。《别让我思考》这本书给了我很大的启发。好了,言归正传,我们回到主菜上吧!

使用&&设置class

让我们探索另一种情况,看看是否可行。

&& 不仅是产生布尔值的逻辑运算符,它实际上可以产生一个值。因此,这就是说如果 isBold 为真,则返回 bold。但是,如果isBold 为假,则返回 isBold 的值。

强调最后一点——它将返回isBold的值。所以我们原来的空类问题仍然可以存在,取决于 isBold 的值是什么。我们来看看一些例子。

例子1: isBold 等于 false /

这仍将渲染空类

例子2: isBold 等于 null /

由于 isBold 为 null,因此空类消失了 。

&& 并没有错——事实上它正在做它的工作,只是我们需要一个具体的返回值。在其他方面,我们不能渲染空类,我们必须传递 null 或 undefined。任何其他的假值都是不行的,因为这一点很容易被忽略,所以我更喜欢更明确的三元操作符或者简单的对象语法 。

空类属性不好吗?

我试着用W3C Markup Validation Service检查了一下,两种语法确实都通过了。

...
...

深入探讨HTML标准:空属性语法,似乎并不禁止空属性。

但是...

但是有效性不适用于 id,因为空ID被认为是无效的。

...
...
...

错误:ID不能为空字符串。

总结

既然空类被认为是有效的,规范也不反对,这一切都取决于你的风格选择。这是你的代码库,你可以决定如何处理它。如果你想保持你的HTML输出干净,那么你可以将 null 传递给你的Vue三元操作符。如果你觉得无所谓,那就算了。这里没有错误的答案,全看你喜欢什么了。

【编辑推荐】

还在用if(obj!=null)做非空判断?带你快速上手Optional实战性理解!

Java中当对象不再使用时,不赋值为null会导致什么后果 ?

是什么让我爱上了Vue.js

10+个很酷的Vue.js组件,模板和实验示例

如何优雅地根治null值引起的Bug?!

【责任编辑:赵宁宁 TEL:(010)68476606】

vue对象属性为null_如何避免在Vue中使用null作为class的空值相关推荐

  1. vue 组件属性监听_详解vuex 中的 state 在组件中如何监听

    前言 不知道大家有没有遇到过这样一种情况? vuex中的state会在某一个组建中使用,而这个状态的初始化是通过异步加载完成的.组件在渲染过程中,获取的state状态为空.也就是说组件在异步完成之前就 ...

  2. js 遍历对象属性,赋值/添加进另一个对象中

    1. 遍历对象属性,相同属性赋值到另一个对象中 var dataA = {'name':'张三','age':20,'sex':'男' } var dataB = {'name':'李四','age' ...

  3. vue对象属性为null_vue 解决无法对未定义的值,空值或基元值设置反应属性报错问题...

    Cannot set reactive property on undefined, null, or primitive value: //无法对未定义的值.空值或基元值设置反应属性: 比如我们在写 ...

  4. IOS中将对象属性列表归档成一个plist文件中

    归档步骤: 1.将一个NSDictionary对象归档到一个plist属性列表中 <1> 首先要将数据封装成字典: NSMutableDictionary * dict = [NSMuta ...

  5. javascript原生事件句柄、BOM、DOM对象属性方法总结

    javascript原生事件句柄.BOM.DOM对象属性方法总结 JS事件句柄 事件句柄 类型 说明 onabort 事件句柄 图像加载被中断 onblur 事件句柄 元素失去焦点 onfocus 事 ...

  6. Js 动态添加、删除 对象属性

    var obj = {} 或  var obj = new Object() //1.对象.属性 = 赋值 obj.aaa = 1 //2.对象[属性] = 赋值 obj["aaa" ...

  7. vue修改代码同步页面_vue修改数组中对象属性值页面不同步更新渲染问题处理

    之前在操作一个接口的时候,由于数据结构比较特殊,vue数组中嵌套了更深的对象,并且在页面操作的过程中对对象属性做了增加.之后蛋疼的发现页面并没有同步渲染. 问题原因: 由于javascript的限制, ...

  8. 解决vue中对象属性改变视图不更新的问题

    解决vue中对象属性改变视图不更新的问题 参考文章: (1)解决vue中对象属性改变视图不更新的问题 (2)https://www.cnblogs.com/buxiugangzi/p/12050165 ...

  9. Vue Angular 双向绑定检测不到对象属性的添加和删除

    由于ES5的限制 Vue  && Angular 双向绑定检测不到对象属性的添加和删除  还有数组增加索引.这些改变不会触发change事件.Vue是因为实例化的时候已经把各个属性都s ...

  10. Vue (二) --- Vue对象提供的属性功能

    --------------------------------------------不是井里没有水,而是你挖的不够深. 3. Vue对象提供的属性功能 3.1 过滤器 过滤器,就是vue允许开发者 ...

最新文章

  1. 写文件 —— 将内容按照指定格式写入配置文件(fwrite()函数-》》向指定的文件中写入若干数据块)
  2. 《Fabric 云存储的电子健康病历系统》(2)病历结构体 Records
  3. 原创跑酷小游戏《Cube Duck Run》 - - 方块鸭快跑
  4. cookie对比localStorage哪个适合作为网站皮肤存储
  5. 《Python Cookbook 3rd》笔记(3.11):随机选择
  6. Java容器-面试题
  7. VMware 禁用虚拟内存文件,提升虚拟机响应速度 .
  8. arm 交叉编译找不到so_交叉编译v8时,提示找不到libstdc++.so.6里面GLIBCXX_3.4.20版本的某个符号...
  9. 检查Oracle数据库和PDB数据库的大小
  10. [转载]Eclipse照亮Java众生
  11. 多少卡路里,我应该吃是错误的
  12. Centos6.5安装后,网络连接显示红叉
  13. 青龙羊毛——酷狗滴滴
  14. 第六章——总线系统(2)
  15. 将SoundCloud API与Jav​​aScript SDK结合使用
  16. Linux 查看文件和文件夹大小,隐藏文件的大小方法总结
  17. 年后创业,该如何选择适合年轻人的小成本创业项目?
  18. 简单Python画折线图
  19. idea+exe4j/launch4j/jsmoonth的打包exe+Inno Setup
  20. 树莓派3B+摄像头使用picamera库

热门文章

  1. mac系统csv转ansi_迅捷文字转语音 for mac
  2. 图像处理-提取指定颜色
  3. 自考管理系统中计算机应用2016.10,2016年10月自考管理信息系统练习题及答案(一)...
  4. yolov5模型框架详解
  5. 深度学习中的Precision和Recall,AP,mAP
  6. Ubuntu安装完驱动后进不去界面
  7. Pytorch遍历DataLoader时报错BrokenPipeError: [Errno 32] Broken pipe
  8. numpy.zeros(np.zeros)
  9. Ubuntu 16.04 修改为几个国内更新源
  10. 【大规模图像检索的利器】Deep哈希算法介绍