ScrollView 组件原生事件onScroll

一些 react-native 官方提供的组件的事件上,会默认提供原生事件,例如 ScrollView 组件用于监视组件滚动的 onScroll 事件,就会提供此原生事件参数。

组件:
<ScrollView onScroll={this._changeScroll.bind(this)}>
    <View><Text>Scroll!</Text></View>
</ScrollView>

对应的方法:
_changeScroll(e){
    console.log(e.nativeEvent)
}

其中,_changeScroll 的参数 e 中,就包含了许多与当前组件ScrollView 相关的属性,例如 偏移距离、组件宽高等。
_changeScroll 方法中打印如下:

其中,contentOffset 代表 ScrollView 组件相对于外部容器在 x轴y轴 上的偏移距离,contentSize 代表 ScrollView 组件包括位于屏幕以外部分的实际宽高,layoutMeasurement 代表ScrollView 组件的可视宽高(也就是位于屏幕可见区域的部分)

默认情况下, ScrollView 组件的onScroll 的触发频率为0,意味着每次视图被滚动,此事件只会被调用一次,想要改变频率需要增加一个scrollEventThrottle 属性,更大的数值能够更及时的跟踪滚动位置,不过可能会带来性能问题。

基于此,可以实现类似于京东app 首页头部搜索栏跟随滚动距离的变化,背景颜色随之发生变化的效果。

但是需要注意的是,scrollEventThrottle 属性目前(0.43版本)只对 IOS 端有效,Android 不会对此属性报错,但无效,无法产生上述效果,可以使用 PanResponder 来进行兼容开发,同意可以达到以上效果。

你可能感兴趣的:(ScrollView 组件原生事件onScroll)