我发现自己需要经常检查嵌套属性,并且我对自己的工作方式非常满意。例如,假设要在表单上存在特定属性的情况下显示组件:
val sourceTypeDirective: Directive1[DocumentSource] = {
parameters('docsource.as[String]) flatMap {
case docSource if sourceAcceptedType(docSource) => provide(sourceValueOf(docSource))
case _ => reject
}
}
我的问题:1)是否有更简洁的方法来解决此问题? 2)这是安全的方法,还是这种方法可能会失败?
答案 0 :(得分:0)
我建议在一行中使用检查条件。
这将是您的情况:
(!!myForms[formId] && !!myForms[formId]['propertyName']) && <SomeComponent />
如果当前条件返回false,则不会检查所有下一个条件。如果我们在变量中写条件,它将在以后进行比较。两者都有较小的性能差异。但这更多是关于代码可读性,这是我们首要关注的问题。
答案 1 :(得分:-1)
您可以使用lodash get
或has。
const hasProp = has(myForms, `${formId}.${propertyName}`)