react-native-stickyheader
Version:
151 lines (111 loc) • 3.15 kB
Markdown
# react-native-stickyheader
[](https://www.npmjs.com/package/react-native-stickyheader)
# 介绍
此组件实现类似React Native ScrollView组件的吸顶效果。
使用原生驱动动画,支持FlatList,SectionList,ListView等有`onScroll`方法的组件。
## 效果
| iOS | Android |
| --- | ------- |
|  |  |
# Example
```js
/**
* Sample React Native App
* https://github.com/facebook/react-native
* @flow
*/
import React, { Component } from 'react';
import {
StyleSheet,
Text,
View,
FlatList,
Dimensions,
SectionList,
Animated,
ScrollView
} from 'react-native';
import StickyHeader from 'react-native-stickyheader';
export default class App extends Component {
constructor(props) {
super(props);
this.state = { scrollY: new Animated.Value(0) }
this.data = []
for (let index = 0; index < 100; index++) {
this.data.push(index)
}
}
_renderItem = (info) => {
return (
<View
style={{ height: 50, backgroundColor: '#ffffff' }}>
<Text>{info.item}</Text>
</View>
)
}
_keyExtractor = (item, index) => {
return index
}
render() {
return (
<View style={styles.container}>
<View style={{ height: 64, backgroundColor: '#973444' }}></View>
<Animated.ScrollView
onScroll={Animated.event([{
nativeEvent: { contentOffset: { y: this.state.scrollY, } }
}], { useNativeDriver: true })}
scrollEventThrottle={1}
>
<Text>文字</Text>
<Text>文字</Text>
<Text>文字</Text>
<Text>文字</Text>
<StickyHeader
stickyHeaderY={60} // 滑动到多少悬浮
stickyScrollY={this.state.scrollY}
>
<View style={{ height: 60, backgroundColor: 'red' }} />
</StickyHeader>
<FlatList
ref={flatList => this._flatList = flatList}
data={this.data}
keyExtractor={this._keyExtractor}
renderItem={this._renderItem}
/>
</Animated.ScrollView>
</View>
);
}
}
const styles = StyleSheet.create({
container: {
flex: 1,
backgroundColor: '#ffffff',
justifyContent: 'center',
},
});
```
**Note:** `scrollEventThrottle={1}`此属性必须设置且为1,因为要保证有足够的偏移量回调。
# react-native-stickyheader 的原理
待整理
## Installation
```
$ npm install react-native-stickyheader --save
```
## Usage (API)
此组件有以下属性:
| Property | Type | Required | Description |
| -------- | ---- | -------- | ----------- |
| `stickyHeaderY` | `number` | NO | 滑动到多少悬浮 |
| `stickyScrollY` | `any` | Yes | 动画的ScrollY回调 |
## 更新
### 1.1.0
- 支持安卓
### 1.0.3
- bug修改
### 1.0.0
- 吸顶效果
### 1.1.2
- 简化组件
## Contributing
此组件受到ScrollView组件启发而成。如果觉得好用,请点一个star,有bug的话请提issue,我会尽快解决。