react-native-largelist is a high-performance list component for React Native that supports both iOS and Android.
Installation:
# Yarn $ yarn add react-native-largelist # NPM $ npm install react-native-largelist --save
Preview:
import React from "react"; import { LargeList } from "../react-native-largelist"; // import { LargeList } from "react-native-largelist"; import { View, Text, StyleSheet, RefreshControl,TouchableOpacity } from "react-native"; class LargeListSample extends React.Component { color; minCellHeight = 24; maxCellHeight = 48; minSectionHeight = 48; maxSectionHeight = 96; refreshing = false; largeList: LargeList; constructor(props) { super(props); this.state = { refreshing: false }; } render() { return ( <View style={{flex:1}}> <TouchableOpacity style={{height:50, alignItems:"center",justifyContent:"center"}} onPress={()=>{ // this.largeList && this.largeList.scrollTo({x:0,y:10000}); // this.largeList && this.largeList.scrollToIndexPath({section:4,row:50}); // let variable = this.largeList && this.largeList.freeCount(); // let variable = this.largeList && this.largeList.visiableIndexPaths(); let variable = this.largeList && this.largeList.renderedIndexPaths(); console.log("count=",variable); }}> <Text>ScrollTo</Text> </TouchableOpacity> <LargeList style={{ flex: 1 }} ref={ref=>this.largeList=ref} bounces={true} refreshing={this.state.refreshing} onRefresh={() => { this.setState({ refreshing: true }); setTimeout(() => this.setState({ refreshing: false }), 2000); }} numberOfRowsInSection={section => this.props.numberOfEachSection} numberOfSections={this.props.numberOfSections} heightForCell={(section, row) => row % 2 ? this.minCellHeight : this.maxCellHeight} renderCell={this.renderItem.bind(this)} heightForSection={section => section % 2 ? this.minSectionHeight : this.maxSectionHeight} renderHeader={this.renderHeader.bind(this)} renderFooter={this.renderFooter.bind(this)} renderSection={section => { return ( <View style={{ flex: 1, backgroundColor: section % 2 ? "grey" : "yellow", justifyContent: "center", alignItems: "center" }} > <Text> I am section {section} </Text> </View> ); }} /> </View> ); } renderItem(section, row) { let color; switch (row % 3) { case 0: color = "red"; break; case 1: color = "green"; break; case 2: color = "blue"; break; } return ( <View tag={row} style={{ flex: 1, backgroundColor: color, flexDirection: "row", justifyContent: "center", alignItems: "center" }} > <Text style={{ marginLeft: row % 3 * 50 }}> {"Section " + section + " Row " + row} </Text> </View> ); } renderFooter() { return ( <View style={{ height: 100, justifyContent: "center", alignItems: "center", backgroundColor: "rgb(99,99,99)" }} > <Text>I am footer</Text> </View> ); } renderHeader() { return ( <View style={{ height: 100, backgroundColor: "rgb(99,99,99)", justifyContent: "center", alignItems: "center" }} > <Text>I am header</Text> </View> ); } } export { LargeListSample };
Preview:
Download Details:
Author: bolan9999
Live Demo: View The Demo
Download Link: Download The Source Code
Official Website: https://github.com/bolan9999/react-native-largelist
License: MIT