如何处理find()返回的不匹配(未定义)



我在React中基于对象的属性渲染组件。问题是,最初渲染没有属性,这是应该的,但.find((破坏了代码:

pallets.find((pallet) => pallet.selected).config.map(.......)

问题是最初没有选择托盘,因此没有配置。

有没有一种方法可以在线解决这个问题,而不需要将pallets.find((结果提取到变量中,然后进行if检查,然后再继续处理映射?如果我能保持React代码的内联,它会让它变得更容易。

如果您想保持内联:

pallets.find((pallet) => pallet.selected) && pallets.find((pallet) => pallet.selected).config.map(.......)

如果您正在使用Typescript或您的JavaScript版本支持可选链接,您可以执行以下操作:

pallets.find((pallet) => pallet.selected)?.config?.map(.......)

请使用

pallets.length > 0 && pallets.find((pallet) => pallet.selected).config.map(.......)

如果你想限制.find((的调用只运行一次,你可以用条件词包装它们:

((pallets.find((pallet) => pallet.selected) || {}).config || []).map(.......)

最新更新