[英]Is it possible to combine optional chaining with arrays and map (in Javascript)?
我最近了解了 Javascript 中的可选链接,并一直在 React/NodeJS 项目中使用它。 效果很好。
我注意到我一直在将它与数组map
一起使用,即使没有考虑太多——这似乎是一种自然的用途(这里的items
是一个数组,或者可能是undefined
)
{items?.map(postListItem => ....
也就是说,如果items
存在,它将映射,但如果items
是undefined
则不会映射,但如果我要在undefined
上调用map
,它将避免任何运行时错误
尽管如此,我不知道这是否可以接受,或者我是否误用了可选链接。 我搜索了一个答案,但到目前为止还没有找到答案,这让我怀疑我误用了它。 非常感谢任何信息!
请参阅此处有关打字稿使用的答案。 您需要一个用于数组空安全可选链接的句点。
this.mostRecentMfaAttempt = this.verificationsAttempts?.content?.[0]
如果链接失败,表达式将评估为undefined
。
当孩子被评估为undefined
时,它不会呈现。
条件渲染已经是相当普遍的策略。 以前,当您有可能是数组或undefined
的东西时,如果有数组,您想要映射,您将不得不执行以下操作:
{ items && items.map( ...
这是有效的,因为如果items
是undefined
,整个表达式将被评估为undefined
,并且不会发生渲染,也不会引发错误。
使用可选链接的工作方式完全相同,只是它更简洁。 所以,是的,这是一件非常有效的事情。
可选链接是第 4 阶段,因此您可以指望它可靠地工作。
数组是对象。 但是可选链不仅仅适用于对象——它可以适用于任何可能具有属性或方法的东西。 例如,如果foo
为null
、 undefined
或数字(数字有toFixed
方法), const bar = foo?.toFixed(2)
就可以正常工作。
通过过滤使用以下系统从 MongoDB 数据库中获取数据。
cars.filter(car => car.email === user.email)?.map(car => {
return (
<tr key={car._id}>
<td>{car.userName}</td>
<td className=''>{car.email}</td>
<td>{car.name}</td>
<td><img src={car.img} alt="" /></td>
</tr>
)
})
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.