这可能是一个微妙的问题,但我不喜欢它在浏览器中检查元素时的显示方式
有时我需要使用三元运算符向react中的元素添加一个类,这可能会在条件返回false时留下一些空间
例如:
<div className={`container ${some condition ? 'bg-green' : ''}`}
当condition为true
时,类将添加到div
,但当condition为false
时,检查时元素中会显示一个难看的空格
<div class="container ">
它是可以接受的??还是一种不良的做法??,有没有好的解决办法?
4条答案
按热度按时间68bkxrlz1#
这应该不是什么大问题,但是您可以删除三元运算符前面的空格(并将其添加到
.bg-green
分支中)我还没有尝试过,但您可能也会添加一个
.trim()
,就像下面这样,但我认为您不需要它。演示:
col17t5w2#
你不会太在意的,没什么大不了的...
无论如何,添加间距作为条件的一部分来求解它:
或
tyg4sfes3#
它是可以接受的??还是一种不良的做法??,有没有好的解决办法?
这是完全可以接受的,也不是一个坏习惯:如果class属性中有一些额外的空间,对HTML没有任何实际的区别。
一个简洁的解决方案,也可以简化,例如使用多个条件类,是使用
classnames
包。这是一个小型的JavaScript实用函数,用于此目的(即有条件地设置类)。使用classnames
,您的示例看起来如下所示:...这样
container
类将始终存在,而bg-green
类将仅在someCondition
为true
时存在。这使得在需要时添加更多的条件类变得容易(您可以向该对象添加更多的键),并且您无需担心空格。c90pui9n4#
对于这个特殊的例子,我想说最优雅的解决方案是:
您可以在官方React文档here中阅读有关条件渲染的信息。