2017-06-02 104 views
1

是否有可能在React Native的ScrollView中有多个onScroll事件?ScrollView上的多个onScroll事件React Native?

我遇到的问题是,我有渲染成分的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

这可能吗?有任何想法吗?

回答

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) 
} 
3

如果您正在使用 “useNativeDriver”:

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

这为我工作,即使没有使用 “useNativeDriver” – pucky124