我构建了一个可滚动SectionList的字母洗涤器。通过使用getItemLayout对SectionList进行了优化。如果我在字母上滑动,则滚动会按计划进行,但在我从屏幕上松开手指之前,SectionList不会重新呈现。

See this expo snack

任何人如何解决这个想法?

react-native -  react  native : Optimized SectionList does not rerender after scrollToLocation-LMLPHP

最佳答案

通过查看PanResponder的源代码来解决它。 PanResponder通过InteractionManager设置交互句柄。您可以通过this.panResponder.getInteractionHandle()(未记录的功能)访问此句柄,然后在每次滚动到SectionList中的某个位置时将其清除:

if (this.panResponder.getInteractionHandle()) {
    InteractionManager.clearInteractionHandle(
        this.panResponder.getInteractionHandle()
    );
}

这会将SectionList在队列中上移,以进行可见性计算和渲染。

我建议通过尽可能少地清除交互句柄来进行优化,因为InteractionManager出于性能原因而使用。

关于react-native - react native : Optimized SectionList does not rerender after scrollToLocation,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/47411170/

10-12 13:00