【发布时间】:2017-11-06 05:26:15
【问题描述】:
我经常错过一两次检查,从而破坏了整个应用程序。我真的觉得这是用 js 编写的一种痛苦,因为一个简单的错误可能会毁掉整个应用程序。
获取此代码
{this.state.floor && this.state.floor[this.state.selectedTab].units.length === 0 && <div>render something</div>}
如果未定义单位,则会出错。我该如何检查?第一次检查this.state.floor 似乎不起作用。我应该检查this.state.floor.length > 1吗?
如果返回的数据有嵌套或多个嵌套的属性,我的jsx有时会这么复杂。
【问题讨论】:
-
除了
this.state.floor,你还需要检查this.state.floor[this.state.selectedTab]和this.state.floor[this.state.selectedTab].units是否存在。 -
@Titus 这就是我说的原因,检查让我的 jsx 看起来很乱,有什么解决方案吗?
-
并非如此,您可以像 TLadd 建议的那样将检查提取到它自己的函数中,或者创建一个使检查属性更容易的实用函数(例如:
Utils.hasProp(obj, "prop1.prop2...."))但您必须进行检查如果您不确定属性是否存在。
标签: javascript reactjs ecmascript-6 jsx