试图使嵌套数组与React Native Flat List一起工作

问题描述 投票:0回答:1

所以我得到了这个对象,我将它作为数据传递给我的本机扁平列表

<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。

这是否适用于平面列表或虚拟列表(如果必须交换),或者我需要为每个数据呈现一个平面列表?

编辑:测试了好无意的答案,但是得到了这个

enter image description here

javascript react-native react-native-flatlist
1个回答
0
投票
[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>); } }} />

© www.soinside.com 2019 - 2024. All rights reserved.