web-dev-qa-db-fra.com

ScrolltoIndex ne fonctionne pas en natif réactif sur une liste plate

J'utilise un flatList pour restituer des éléments à partir d'un fichier json, je veux faire défiler jusqu'à un index spécifique lorsqu'un bouton est enfoncé, j'ai déclaré la fonction pour appuyer sur le bouton comme ci-dessous

goIndex = () => {
    this.flatListRef.scrollToIndex({animated: true,index:5});
};

bien qu'il ne montre aucune erreur, la liste ne se déplace pas vers l'index spécifié.

réactif natif: 0,55,4

Attacher le code de FlatList.

<View>
    <FlatList   
        getItemLayout={(data, index) => { return {length: 33, index, offset: 33 * index} }}
        ItemSeparatorComponent={ () => <View style={ { width:"100%", height: .7, backgroundColor: 'rgba( 52,52,52,1)' } } /> }
        data={this.state.outverse}
        renderItem={({item,index}) =>
            <View style={styles2.flatview}>
                <Text style={styles2.name}>{++index}  {item} </Text>
            </View>
        }
    />
</View>
5
Joji Thomas

Essayez d'ajouter une référence à votre composant FlatList comme ci-dessous:

<View>
    <FlatList   
        getItemLayout={(data, index) => { return {length: 33, index, offset: 33 * index} }}
        ItemSeparatorComponent={ () => <View style={ { width:"100%", height: .7, backgroundColor: 'rgba( 52,52,52,1)' } } /> }
        data={this.state.outverse}
        ref={(ref) => { this.flatListRef = ref; }}
        renderItem={({item,index}) =>
            <View style={styles2.flatview}>
                <Text style={styles2.name}>{++index}  {item} </Text>
            </View>
        }
    />
</View>

Et dans la fonction goIndex:

goIndex = () => {
    this.refs.flatListRef.scrollToIndex({animated: true,index:5});
};
3
Kirankumar Dafda

Essayez ce qui suit:

<FlatList
        style={{
          marginLeft: 50,
          paddingTop: 0,
          paddingRight: 0
        }}
        ref={ref => {
          this.flatList_Ref = ref;  // <------ ADD Ref for the Flatlist 
        }}
        removeClippedSubviews={false}
        enableEmptySections={false}
        data={this.props.list}
        keyExtractor={this._keyExtractor}
        renderItem={this._renderItem1}
        ItemSeparatorComponent={this._renderSeparator}

      />

Et puis appelez une fonction goIndex:

goIndex = () => {

 this.flatList_Ref.scrollToIndex({animated: true,index:5});

};
1
A.Matt