Реагируйте на родной индекс Get Flatlist - PullRequest
2 голосов
/ 09 февраля 2020

Я использую flatlist внутри flatlist и хочу получить индекс первого плоского списка, который я использовал
код ниже:

<FlatList
  data ={this.state.data}
  renderItem = {(item, index1)=>
    <View>
      <FlatList
        data = {this.state.data2}
        renderItem = {(item, index2) => 
          console.log("parent_index",index1);
          console.log("child_index",index2);
        }
      />
    </View>
  }

Как я могу получить index1?
Что я сделал в коде выше не определен.

Ответы [ 3 ]

2 голосов
/ 09 февраля 2020

Код для первого плоского списка

render() {
    return (
        <View style={{ height: "100%", width: "100%", backgroundColor: 'red' }}>
          <FlatList
            data={this.state.data}
            renderItem={({ item, index }) => {
              return (
                this.renderSecondFlatlist(index)
              );

            }
            }
          />
        </View>
    )
  }

Код для второго плоского списка, где вы передадите «индекс» первого FlatList

 renderSecondFlatlist(index1) {
        return (
          <View style={{ flex: 1, backgroundColor: 'pink' }}>

            <FlatList
              data={this.state.data2}
              renderItem={(item, index2) => {
                /*return (
                  <Text>{index1}</Text>
                );*/
                console.log("index:-",index1);
              }
              }
            />
          </View>
        );
      }
1 голос
/ 09 февраля 2020

Вы должны использовать keyExtractor prop of FlatList.

<FlatList
  data ={this.state.data}
  keyExtractor={(item, index) => index}
  renderItem = {(item, index)=>
    <View>
      <FlatList
        data = {this.state.data2}
        renderItem = {(item, index) => 
          console.log("parent_index",index);
        }
      />
    </View>
  }
1 голос
/ 09 февраля 2020

Вам нужен обработчик, который onPress получит индекс, например:

onPress = {() => this.getItem (index)} И обработчик:

getItem = index => this. setState (prevState => ({selectedByIndex: [index, ... prevState.selectedByIndex]})

...