3

Wenn Sie in Ihrer ReactNative-App ScrollView oder ListView verwenden und einige neue Daten eintraten, wird diese Position standardmäßig in der Scroll-Komponente beibehalten. Das heißt, wenn die neuen Daten der Höhe 20 in der Mitte der Bildlaufansicht angezeigt werden, werden die Bildschirmelemente um 20 und manchmal auch über den Bildschirm verschoben.Wie kann ich Position auf ScrollView oder ListView behalten?

Gibt es eine Möglichkeit, die Position zu behalten/zu verfolgen? Wenn beispielsweise die neuen Daten der Höhe 20 eingingen, wird die Position automatisch um 20 angepasst, sodass die aktuellen Bildschirmelemente auf dem Bildschirm angezeigt werden. Danke im Voraus.

+1

Dies könnte Ihnen helfen http://StackOverflow.com/a/36803008/3790046 –

+1

@HenrikR Ja, das ist definitiv eine alternative Möglichkeit, es zu tun, aber es ruft die Positionsänderung in onContentSizeChange, was bedeutet, dass es die Position nach dem Inhalt anpassen Größe hat sich bereits geändert und würde die Position danach ändern, so dass es auf schlechtes UX stoßen wird. – Dave

Antwort

1

ich eine funktionierende Lösung, obwohl es nicht sehr glatt ist, hat es den Job:

handleScroll = (event) => { 
    this.scroll = event.nativeEvent.contentOffset.y 
    if (this.ready && this.scroll < SCROLL_TRIGGER) { 
    // load more stuff here 
    } 
} 

handleSize = (width, height) => { 
    if (this.scroll) { 
    const position = this.scroll + height - this.height 
    this.refs.sv.scrollTo({x: 0, y: position, animated: false}) 
    } 
    this.height = height 
} 

// render: 

<ScrollView ref="sv" 
    scrollEventThrottle={16} 
    onScroll={this.handleScroll} 
    onContentSizeChange={this.handleSize} 
> 
    {content} 
</ScrollView> 

Wenn jemand gemacht etwas glatter, lassen Sie es uns wissen!

Verwandte Themen