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

时间:2019-01-30 11:50:35

标签: javascript reactjs react-native

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

2 个答案:

答案 0 :(得分:1)

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

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

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

答案 1 :(得分:0)

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