Javascript 使用React条件呈现,如何避免将0计为未定义?

Javascript 使用React条件呈现,如何避免将0计为未定义?,javascript,reactjs,Javascript,Reactjs,我的React components渲染函数中包含以下内容: return ( <div> {rating.score && ( <div>do something</div> )} </div> ); 这似乎是可行的: {skillRating.rating !== undefined && ( 这是正确的做法吗?零在JavaScript中不是值。 通过这种方式,可

我的React components渲染函数中包含以下内容:

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>
)}