区分 scrollToIndex 和 React Native FlatList 中的手动滚动



我有一个FlatList,它使用 scrollToIndex 函数根据时间序列自动逐项滚动。我还想让用户自己滚动列表,并在发生这种情况时暂时禁用自动滚动。
我的想法是使用 onScroll 事件来捕获用户滚动列表并设置布尔标志。问题是onScroll事件也由scrollToIndex触发。
有没有简单的解决方法?

您可以使用名为"onMomentumScrollEnd"的方法,该方法对于触摸交互应该是唯一的。有了它,您可以去抖动或禁用计时器。不过,您必须测试定时滚动到索引函数是否能够优先于用户交互。在这种情况下,您必须将PanResponder添加到包含视图中,并从其"onPanResponderGrant"方法中禁用/取消抖动计时器。

解决方法可以是使用标志集(例如使用 this.disableOnScrollEvent = true 的组件类)

function onScrollToIndexHandler() {
   this.disableOnScrollEvent = true
   // remaining code
}
function onScrollEventHandler(event){
  if(this.disableOnScrollEvent){
     this.disableOnScrollEvent = false;
      return;
  }
 // remaining code
}

相关内容

  • 没有找到相关文章

最新更新