ScrollView React Native上的多个onScroll事件?

时间:2017-06-02 19:06:21

标签: android ios react-native

是否可以在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,以防我需要不同的滚动功能来处理渲染此组件的更高组件。< / p>

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

2 个答案:

答案 0 :(得分:4)

如果您正在使用&#34; useNativeDriver&#34;:

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

答案 1 :(得分:3)

如果你想要结合事件,我只需将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)
}