问题描述
我学习了Reactjs,阅读了大量代码,无法做到这一点。
这是代码中的错误还是在做某事?
我的意思是这一行:
this.props.onEnd && this.props.onEnd();
我知道onEnd()
是对父项的回调,但是它如何像这样工作?
代码;
/**
* Let parent components kNow that we reached the end of display
*/
_onEnd(isVisible) {
if (!isVisible) return;
this.props.onEnd && this.props.onEnd();
}
解决方法
这等同于说:
if (this.props.onEnd != null) { // validate not null or undefined
this.props.onEnd(); // execute function
}
表示如下:
this.props.onEnd && this.props.onEnd();
如果onEnd
为null或未定义,则表达式将短路。如果是,则该表达式的逻辑求值为:
false && this.props.onEnd()
在这种情况下,由于false && <anything else>
将始终取值为false
。如果和运算符左侧的计算结果为false,则运行时不会评估右侧的调用。
类似地,如果onEnd
有效,那么它在逻辑上被评估为:
true && this.props.onEnd()
在这种情况下,将评估并执行this.props.onEnd()
。
有关更多信息,请查找boolean short circuit作为互联网搜索。