ScrollView React Native 上的多个 onScroll 事件?

Posted

技术标签:

【中文标题】ScrollView React Native 上的多个 onScroll 事件?【英文标题】:Multiple onScroll Events on ScrollView React Native? 【发布时间】:2017-06-02 19:06:21 【问题描述】:

React Native 的 ScrollView 中是否可以有多个 onScroll 事件?

我遇到的问题是我有一个像这样呈现ListView 的组件:

<ListView
      onScroll=Animated.event(
        [nativeEvent: contentOffset: y: this.state.scrollY],
        onScroll: this.props.onScroll
      )
      scrollEventThrottle=10
      dataSource=stuff
      removeClippedSubviews=false
      renderSeparator=this.makeSeparator
      renderRow=this.makeStuff
      enableEmptySections=true
    />

正如您所见,已经有一个 Animaion 事件订阅了它,但我也希望能够传递 this.props.onScroll,以防我想要渲染该事件的更高组件的不同滚动功能。

这可能吗?有什么想法吗?

【问题讨论】:

【参考方案1】:

如果您使用的是“useNativeDriver”:

onScroll = Animated.event(
        [nativeEvent: contentOffset: x: this.xOffset],
        
            listener: (event)=>
                //do something here like Keyboard.dismiss() or this.props.onScroll(event)
            ,
            useNativeDriver: true
        
    );

【讨论】:

这对我有用,即使不使用“useNativeDriver”【参考方案2】:

如果您想组合事件,我只需将Animated.event 带入它自己的方法中。所以

<ListView
      onScroll=this.onScroll.bind(this)
      ...
      />

onScroll(event) 
    if(this.props.onScroll) this.props.onScroll(event)
    Animated.event(
        [nativeEvent: contentOffset: y: this.state.scrollY],
        onScroll: this.props.onScroll
    )(event)

【讨论】:

以上是关于ScrollView React Native 上的多个 onScroll 事件?的主要内容,如果未能解决你的问题,请参考以下文章

react native实现ScrollView简单案例

React-native ScrollView 上拉加载和下拉刷新

react native ScrollView

React Native组件之ScrollView

React Native 第二个 ScrollView 不起作用

React Native组件之ScrollView 和 StatusBar和TabBarIos