Advertisement
tosip

Untitled

Jan 6th, 2023
836
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
  1. import React, { useState, useEffect } from 'react';
  2. import studentData from '../assets/MOCK_DATA.json';
  3.  
  4. import {
  5.   View,
  6.   Text,
  7.   FlatList,
  8.   TouchableOpacity,
  9.   StyleSheet,
  10. } from 'react-native';
  11. import { useNavigation } from '@react-navigation/native';
  12.  
  13. const StudentList = () => {
  14.   const navigation = useNavigation();
  15.   const [loading, setLoading] = useState(false);
  16.   const [users, setUsers] = useState([]);
  17.   const [page, setPage] = useState(1);
  18.  
  19.   getUsers = (pageNumber) => {
  20.     const startIndex = (pageNumber - 1) * 10;
  21.     const endIndex = startIndex + 10;
  22.     const pageData = studentData.slice(startIndex, endIndex);
  23.     setUsers(pageData);
  24.     //console.log(pageData);
  25.     setLoading(false);
  26.   };
  27.  
  28.   loadMore = () => {
  29.     setPage(page + 1);
  30.     setLoading(true);
  31.   };
  32.  
  33.   useEffect(() => {
  34.     getUsers(page);
  35.   }, [page]);
  36.  
  37.   return (
  38.     <View style={{ padding: 20 }}>
  39.       {loading ? (
  40.         <Text>Loading...</Text>
  41.       ) : (
  42.         <FlatList
  43.           data={users}
  44.           renderItem={({ item }) => (
  45.             <TouchableOpacity
  46.               onPress={() =>
  47.                 navigation.navigate('StudentDetails', {
  48.                   studentId: item.id,
  49.                   studentImage: item.picture,
  50.                   studentFName: item.first_name,
  51.                   studentLName: item.last_name,
  52.                   studentEmail: item.email,
  53.                   studentGender: item.gender,
  54.                   studentClass: item.class,
  55.                 })
  56.               }
  57.             >
  58.               <View style={styles.itemContainer}>
  59.                 <Text style={styles.nameText}>
  60.                   {item.id}-{item.first_name}
  61.                 </Text>
  62.               </View>
  63.             </TouchableOpacity>
  64.           )}
  65.           keyExtractor={({ id }) => id.toString()}
  66.           onEndReached={loadMore}
  67.           onEndReachedThreshold={0.5}
  68.         />
  69.       )}
  70.     </View>
  71.   );
  72. };
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement