JSPM

  • ESM via JSPM
  • ES Module Entrypoint
  • Export Map
  • Keywords
  • License
  • Repository URL
  • TypeScript Types
  • README
  • Created
  • Published
  • 0
  • Score
    100M100P100Q34356F
  • License MIT

React Native Hook For paginating FlatLists

Package Exports

    This package does not declare an exports field, so the exports above have been automatically detected and optimized by JSPM instead. If any package subpath is missing, it is recommended to post an issue to the original package (react-native-flatlist-paginator) to support the "exports" field. If that is not possible, create a JSPM override to customize the exports field for this package.

    Readme

    react-native-flatlist-paginator

    usePagination React Native Hook For paginating FlatLists.

    Installation

    npm install react-native-flatlist-paginator
    yarn add react-native-flatlist-paginator

    example

    import React from 'react';
    import {View, Text, StyleSheet, FlatList} from 'react-native';
    import usePagination from "flatpaginator";
    
    
    const fetchApi = (page = 0, pageSize = 10) => {
        const data = [1,2,3,4,5,6,7,8,9,10, 11,12,13,14,15,16,17,18,19,20, 21,22,23,24,25]
        return new Promise(resolve => {
            setTimeout(() => resolve(data.slice(page * pageSize, (page + 1) * pageSize) || []), 1000);
        });
    }
    
    
    const App : React.FC<any> = () => {
        
        const {
            data,         //use it in Flatlist data
            addData,      //push new group of data
            onEndReached, //callback in Flatlist onEndReached
            pageIndex,    //current pageIndex use it to query data
            ListFooterComponent, //use it in Flatlist ListFooterComponent
        } = usePagination(10, 1); //pageSize = 10 // Starting Page (OPTIONAL)
        
        
        React.useEffect(() => {
            fetchApi(pageIndex).then((data: any) => {
                addData(data);
            })
        }, [pageIndex]);
        
        
        return (
            <FlatList
                onEndReachedThreshold={.5}
                onEndReached={onEndReached}
                contentContainerStyle={{flexGrow: 1}}
                data={data}
                renderItem={({item} : any) => <View style={styles.item}><Text>item: {item}</Text></View>}
                ListFooterComponent={ListFooterComponent}
                keyExtractor={item => item.toString()}/>
        );
    };
    
    
    const styles = StyleSheet.create({
        item: {
            height: 100,
            backgroundColor : '#e3e3e3',
            marginVertical : 6,
            justifyContent : 'center',
            alignItems : 'center',
            margin : 12,
            borderRadius : 5,
        }
    });
    
    export default App;
    

    usePagination full Usage

    import usePagination from "flatpaginator";
    
    const {
        data,         //use it in Flatlist data
        addData,      //push new group of data
        onEndReached, //callback in Flatlist onEndReached
        loadingMore,  //if true show loading more Indicator
        pageIndex,    //current pageIndex use it to query data
        startAtPage,  // Set Starting Page
        hasMoreData,   //if false show hasMoreData message
        resetData,    //use it to reset data when Flatlist refreshing
        ListFooterComponent, //use it in Flatlist ListFooterComponent
    } = usePagination(10); //pageSize = 10
    

    how hasMoreData calculated

    if pageSize = 10

    • if last page data length = 10 hasMoreData = true
    • if last page data length < 10 hasMoreData = false
    • if last page data length = 0 hasMoreData = false

    Contributing

    See the contributing guide to learn how to contribute to the repository and the development workflow.

    License

    MIT