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

Javascript 区分scrollToIndex和React Native FlatList中的手动滚动,javascript,reactjs,react-native,Javascript,Reactjs,React Native,我有一个FlatList,它使用scrollToIndex功能根据时间序列自动滚动项目。我还想让用户自己滚动列表,并在出现这种情况时暂时禁用自动滚动。 我的想法是使用onScroll事件捕获用户滚动列表并设置布尔标志的时间。问题是onScroll事件也会由scrollToIndex触发 有没有一种简单的方法可以解决这个问题?您可以使用一种称为“onMomentumScrollEnd”的方法,这种方法对于触摸交互来说应该是唯一的。有了它,你可以解除或禁用你的定时器。您必须测试计时scrollToI

我有一个
FlatList
,它使用
scrollToIndex
功能根据时间序列自动滚动项目。我还想让用户自己滚动列表,并在出现这种情况时暂时禁用自动滚动。
我的想法是使用
onScroll
事件捕获用户滚动列表并设置布尔标志的时间。问题是
onScroll
事件也会由
scrollToIndex
触发

有没有一种简单的方法可以解决这个问题?

您可以使用一种称为“onMomentumScrollEnd”的方法,这种方法对于触摸交互来说应该是唯一的。有了它,你可以解除或禁用你的定时器。您必须测试计时scrollToIndex函数是否能够优先于用户交互。在这种情况下,您必须将PanResponder添加到包含的视图中,并在其“onPanResponderGrant”方法中禁用/取消计时

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

function onScrollToIndexHandler() {
   this.disableOnScrollEvent = true
   // remaining code
}

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