Native react: Optimierte SectionList wird nach scrollToLocation nicht neu gerendert

9

Ich habe einen alphabetischen Scrubber erstellt, der eine SectionList scrollt. Die SectionList wird durch die Verwendung von getItemLayout optimiert. Wenn ich über das Alphabet scruble, geschieht das Scrollen wie geplant, aber die SectionList wird nicht neu gerendert, bis ich meinen Finger vom Bildschirm loslasse.

Sehen Sie sich diesen Expo-Snack an

Irgendwelche Ideen, wie man das löst?

    
Gersom 21.11.2017, 10:46
quelle

2 Antworten

6

Habe es gelöst, indem ich den Quellcode von PanResponder durchgegangen bin. PanResponder legt ein Interaction-Handle über den InteractionManager fest. Sie können auf dieses Handle über this.panResponder.getInteractionHandle() (nicht dokumentierte Funktion) zugreifen und es dann jedes Mal löschen, wenn Sie zu einer Position in der SectionList blättern:

%Vor%

Dadurch wird die SectionList in die Warteschlange verschoben, um ihre Sichtbarkeitsberechnungen und Renderings durchzuführen.

Ich rate dazu, dies zu optimieren, indem Sie den Interaktions-Handle so oft wie möglich löschen, da der InteractionManager aus Performance-Gründen verwendet wird.

    
Gersom 27.11.2017, 13:32
quelle
0

Damit die sectionList dynamisch aktualisiert wird, müssen Sie die Daten in state platzieren. Dieses Expo-Beispiel (von jemand anderem gemacht) ist ein gutes Beispiel:

Ссылка

Sein panResponder hat alle Daten im Status und auf jedem "handlePanResponderMove" ruft er setState () auf, um die Position jedes Mal zu aktualisieren, wenn es sich bewegt. Alles in allem, wenn Ihre Daten nicht im Status sind, wird sie für Sie nicht dynamisch aktualisiert. Wenn Sie Ihre Daten in "React-Native" in den Status versetzen, speichert sie dynamisch Ihre Datenänderungen.

Hoffe, das hilft!

    
ShaneG 23.11.2017 19:23
quelle

Tags und Links