我有一个布尔表达式定义为:
const actif =
this.props.configuration &&
this.props.configuration.puissance &&
this.props.configuration.puissance > 0
取决于组件,this.props。可能有或没有configuration
,configuration
可能或没有puissance
。这就是为什么我需要做所有这些验证。
使用{ has } from 'lodash'
,我已经能够简化一些:
const actif =
has(this.props.configuration, 'puissance') &&
this.props.configuration.puissance > 0
,但这也不令人满意。
我尝试了其他事情。我知道JS允许您做这样的事情:
(undefined || 4) === 4
是真的。不幸的是,
(this.props.configuration.puissance || undefined ) > 0
仍然给我Cannot read property 'puissance' of undefined
是否有一种简单的方法可以进行此比较,而无需检查对象的整个树吗?(如果没有任何步骤,请停止在树上进一步走吗?)
因为听起来好像您已经在使用lodash,如何使用lodash的_.get()
函数?
const actif = _.get(this.props, "configuration.puissance", 0) > 0;
有一个建议在JavaScript中提供可选的链式属性,但尚未进入该语言。当/如果这样做,您可以做这样的事情:
const actif = this.props?.configuration?.puissance || 0 > 0;