所以我得到了这个对象,我将它作为数据传递给我的本机扁平列表
<FlatList
extraData = {this.state}
data = {this.state.data_n1}>
renderItem = {({item, index}) => {
this.state.data_n2.forEach(aux => {
if(item.id == aux.id) {
return(<View><Text>Display first stuff</Text></View>);
} else {
return(<View><Text>Display second stuff</Text></View>);
}
}
}
/>
整个想法是比较两个对象,如果data_n2包含来自data_n1的相同ID,则显示来自data_n2的数据,如果不是,则仅显示来自data_n1的数据,问题是,每当我单击a时,我都会显示此内容日历条,因此,如果我单击6月1日,则该日期应显示data_n2,如果单击6月2日,则应显示data_n1。
这是否适用于平面列表或虚拟列表(如果必须交换),或者我需要为每个数据呈现一个平面列表?
编辑:测试了好无意的答案,但是得到了这个
forEach
仅返回undefined
,无论您在函数中返回什么。您可以先找到元素,然后有条件地渲染它:
<FlatList
extraData={this.state.data_n2}
data={this.state.data_n1}>
renderItem = {({ item, index }) => {
const found = this.state.data_n2.find(aux => item.id == aux.id);
if (found) {
return (<View><Text>Display first stuff: {found.id}</Text></View>);
} else {
return (<View><Text>Display second stuff: {item.id}</Text></View>);
}
}}
/>
如果可能有多个匹配项:
<FlatList extraData={this.state} data={this.state.data_n1}> renderItem = {({ item, index }) => { const found = this.state.data_n2.filter(aux => item.id == aux.id); if (found.length > 0) { return ( <View>{ found.map(e => (<View><Text>Display first stuff: {e.id}</Text></View>)) }</View> ); } else { return (<View><Text>Display second stuff</Text></View>); } }} />