我正在尝试在检查是否存在字符串后渲染元素,例如数组中存在“ abc”。我尝试使用各种不同的函数,例如array.find(),array.includes(),array.some()这样做时,它给我一个错误-
TypeError:null不是一个对象(正在评估'o.includes')
下面是我在render函数内部使用的一段代码。 “ abc”是我要检查字符串“ a”是否存在于该数组中的数组,如果确实存在,则显示该ExpandedHeader元素。
PS:我是本机反应的新手。
<View>
{abc.includes("a") && <ExpandedHeader title={"Got it"}
expanded={this.state.riskRatingExpanded}
onPress={() => {this.setState({
riskRatingExpanded :!this.state.riskRatingExpanded,
basicDetailsExpanded : false,
envProfileExpanded : false,
nwswProfileExpanded : false,
additionalInfoExpanded : false,
scoresExpanded : false,
});
}}
/>}
</View>
但是,如果我做下面的事情,它会起作用-
<View>
{abc != null && <ExpandedHeader title={abc[0]}
expanded={this.state.riskRatingExpanded}
onPress={() => {this.setState({
riskRatingExpanded :!this.state.riskRatingExpanded,
basicDetailsExpanded : false,
envProfileExpanded : false,
nwswProfileExpanded : false,
additionalInfoExpanded : false,
scoresExpanded : false,
});
}}
/>}
</View>
答案 0 :(得分:1)
您的渲染函数在存在数组数据之前运行,并且最初数组数据为null
,
确保首先将abc
状态初始化为数组,
state = {
abc: []
}
有了这个,您的第一个代码应该可以工作。