Uh oh!
There was an error while loading.Please reload this page.
- Notifications
You must be signed in to change notification settings - Fork49
An interactive sticky item inspired by Facebook Stories.
License
NotificationsYou must be signed in to change notification settings
gorhom/react-native-sticky-item
Folders and files
| Name | Name | Last commit message | Last commit date | |
|---|---|---|---|---|
Repository files navigation
yarn add @gorhom/sticky-item# ornpm install @gorhom/sticky-itemAlso, you need to installreact-native-reanimated,react-native-gesture-handler &react-native-svg, and follow theirs installation instructions.
...importStickyItemFlatListfrom'@gorhom/sticky-item';// dummy dataconstdata=[...Array(20)].fill(0).map((_,index)=>({id:`item-${index}`}));// configsconstITEM_WIDTH=90;constITEM_HEIGHT=150;constSTICKY_ITEM_WIDTH=24;constSTICKY_ITEM_HEIGHT=24;constSTICKY_ITEM_BACKGROUNDS=['#222','#000'];constSEPARATOR_SIZE=8;constBORDER_RADIUS=10;constStickyItemView=({ x, threshold, itemWidth, itemHeight, stickyItemWidth, stickyItemHeight, separatorSize, isRTL,})=>{constamazingAnimation={// here you add your custom interactive animation// based on the animated value `x`}return<Animated.Viewstyle={amazingAnimation}/>}constApp=()=>{// methodsconsthandleStickyItemPress=()=>Alert.alert('Sticky Item Pressed');// renderconstrenderItem=({ item, index})=>(<Viewkey={`item-${index}`}style={{backgroundColor:'red',width:ITEM_WIDTH,height:ITEM_HEIGHT,}}/>)return(<StickyItemFlatListitemWidth={ITEM_WIDTH}itemHeight={ITEM_HEIGHT}separatorSize={SEPARATOR_SIZE}borderRadius={BORDER_RADIUS}stickyItemWidth={STICKY_ITEM_WIDTH}stickyItemHeight={STICKY_ITEM_HEIGHT}stickyItemBackgroundColors={STICKY_ITEM_BACKGROUNDS}stickyItemContent={StickyItemView}onStickyItemPress={handleStickyItemPress}data={data}renderItem={renderItem}/>)}exportdefaultApp
| name | description | required | type | default |
|---|---|---|---|---|
itemWidth | Item's width. | YES | number | |
itemHeight | Item's height. | YES | number | |
separatorSize | FlatList's separator width, * if you provideItemSeparatorComponent, you will need to setseparatorSize. | NO* | number | 10 |
borderRadius | Item & sticky border radius. | NO | number | 15 |
stickyItemActiveOpacity | Sticky item's active opacity. | YES | number | 0.25 |
stickyItemWidth | Sticky item's width. | YES | number | |
stickyItemHeight | Sticky item's height. | YES | number | |
stickyItemBackgroundColors | Sticky item's two background colors, one when sticky item is extended another when it's minimize. | YES | string[] | |
stickyItemContent | Sticky item's content component. | YES | ReactNode | |
isRTL | FlatList' layout direction. | NO | boolean | false |
onStickyItemPress | Callback when sticky item gets pressed. | NO | function | |
...FlatList Props | React Native FlatList props. | NO | FlatList |
- Write a detailed step-by-step instruction to create sticky interactive animation.
- Add more examples.
- Add vertical support ?.
To keep this library maintained and up-to-date please considersponsoring it on GitHub. Or if you are looking for a private support or help in customizing the experience, then reach out to me on Twitter@gorhom.
MIT
- react-native-reanimated
- react-native-gesture-handler
- react-native-redash
- react-native-svg
- @react-native-community/bob
About
An interactive sticky item inspired by Facebook Stories.
Topics
Resources
License
Contributing
Uh oh!
There was an error while loading.Please reload this page.
Stars
Watchers
Forks
Sponsor this project
Uh oh!
There was an error while loading.Please reload this page.
Uh oh!
There was an error while loading.Please reload this page.

