2017-10-31 7 views
0

Ich verwende FlatList Komponente von ReactNative und es funktioniert perfekt. Jetzt möchte ich es nach unten scrollen, wenn Benutzer neues Element/Kommentar eingibt. JetztFlatList Scroll nach dem Hinzufügen eines neuen Elements

<FlatList style={styles.commentList} 
    data={commentList} 
    keyExtractor={(item, index) => index} 
    renderItem={this.renderRow.bind(this)} 
/> 

, wenn Benutzer Kommentar eingibt, wird commentList aktualisiert und FlatList bekommt auch aktualisieren, aber ich mag nach unten bewegen, so dass Benutzer letzten Kommentar geschrieben lesen können.

+1

Versuchen Sie scrollToIndex? Überprüfen Sie die Dokumente hier https://facebook.github.io/react-native/docs/flatlist.html#scrolltoindex – Srijith

+0

@Srijith ja ich habe versucht, dass auch this.commissionRef.scrollToIndex ({animiert: true, index: 10}) Aber irgendwie hat das auch nicht funktioniert. –

+0

Es wird toll sein, wenn Sie hier einen Snack teilen können https://snack.expo.io/ – Srijith

Antwort

-1

Check out: Es ist nicht meine Lösung, aber ich habe mit dieser Methode arbeiten.

https://exp.host/@xavieramoros/snack-SyN4FJikz Quellcode: https://github.com/xavieramoros/flatlist-initialScrollIndexIssue/blob/master/App.js Expo 22 - RN 0,49

Ein großer Dank https://expo.io/@xavieramoros

Edited: Wenn Sie nur dann scrollToEnd nach unten scrollen (https://facebook.github.io/react-native/docs/flatlist.html#scrolltoend) ist in neue RN. verwenden Sie es wie

<FlatList 
     ref={ (ref) => { this.flatList = ref; }} 
     data={this.data} 
     renderItem={ this.renderItem } 
     keyExtractor={ this.keyExtractor} 
     onScroll={ this.scrollToEnd} 
     /> 
    ...... 

und in Ihrer Methode

scrollToEnd =() => { 
    const wait = new Promise((resolve) => setTimeout(resolve, 0)); 
    wait.then(() => { 
     this.flatList.scrollToEnd({ animated: true }); 
    }); 
} 
+0

Ein Link zu einer Lösung ist willkommen, aber bitte stellen Sie sicher, dass Ihre Antwort ohne sie nützlich ist: [Kontext um den Link hinzufügen] (/ (/meta.stackexchange.com/a/8259), damit Ihre Mitbenutzer eine Vorstellung davon haben, worum es sich handelt und warum sie da ist. Zitieren Sie dann den relevantesten Teil der Seite, auf die Sie verlinken, falls die Zielseite nicht verfügbar ist. [Antworten, die wenig mehr als ein Link sind, können gelöscht werden.] (// stackoverflow.com/help/deleted-answers) –

+0

Während dieser Link die Frage beantworten kann, ist es besser, die wesentlichen Teile der Antwort hier einzubeziehen und bereitzustellen der Link als Referenz. Nur-Link-Antworten können ungültig werden, wenn sich die verknüpfte Seite ändert. - [Aus Bewertung] (/ review/low-quality-posts/18300460) –

+0

Ich habe die Antwort auf den Link in gewissem Maße selbst verwendet, aber da der Kontext in jeder Frage anders sein kann, habe ich gerade die ganze Antwort gepostet (die Verknüpfung). Wie für Ihren Fall, stellen Sie sicher, dass Sie getItemLayout für variable Indexhöhe implementiert haben. (https://facebook.github.io/react-native/docs/flatlist.html#scrolltoindex) Und auch die Frage ist wirklich allgemein, wenn Sie eine bestimmte Antwort wollen, dann bitte posten Sie eine vollständige Frage mit mehr Code! Vielen Dank . –

Verwandte Themen