Javascript 使用React条件呈现,如何避免将0计为未定义?
我的React components渲染函数中包含以下内容:Javascript 使用React条件呈现,如何避免将0计为未定义?,javascript,reactjs,Javascript,Reactjs,我的React components渲染函数中包含以下内容: return ( <div> {rating.score && ( <div>do something</div> )} </div> ); 这似乎是可行的: {skillRating.rating !== undefined && ( 这是正确的做法吗?零在JavaScript中不是值。 通过这种方式,可
return (
<div>
{rating.score && (
<div>do something</div>
)}
</div>
);
这似乎是可行的:
{skillRating.rating !== undefined && (
这是正确的做法吗?零在JavaScript中不是值。
通过这种方式,可以渲染0或更大的值
返回(
{rating.score>-1&&(
做点什么
)}
);
发生的情况是,0
是一个伪值,它在布尔上下文中强制为false
,但是您只需检查该值是否大于或等于零(假设大于负值无效):
返回(
{rating.score>0&&(
做点什么
)}
);
编辑时的条件不起作用,因为在表达式
rating.score&&rating.score>=0
中,第一个操作数rating.score
将为false。如果rating.score
保证为未定义的或一个数字,则为:
(rating.score >= 0) && (...)
请注意,这一点不适用于其他falsy值。如果有可能是falsy而不是数字,则应为:
(rating.score === 0 || rating.score > 0) && (...)
这也有利于可读性(至少对于了解上述问题的开发人员来说),因为条件是明确的。有很多方法可以做到这一点,我不能说只有一个答案。您可能需要考虑的是使用Global或No.<代码>方法,即<代码>编号.ISCONTIGER()/<代码> < /P>
在这些情况下,您可以帮助检查您使用的号码是否有效,并有助于防止Infinty
或NaN
(尽管NaN
无论如何都是错误的值)
isFinite
的好处是,它还可以将被转换为字符串的数字进行转换,这样“10”
就可以通过了。不确定这是否是个问题
{isFinite(rating.score) && (
<div>do something</div>
)}
{isFinite(rating.score)&&(
做点什么
)}
评级
可能为空
。尝试skillRating.rating!=空值
skillRating.rating!==未定义的
应该可以正常工作
(rating.score === 0 || rating.score > 0) && (...)
{isFinite(rating.score) && (
<div>do something</div>
)}