install react native
npx create-expo-app project3
5. setelah instalasi selesai replace isi file pada directory App\[tabs]\index.tsx dengan contoh di bawah ini
import React from 'react';
import { StyleSheet, View, FlatList, Image, Text } from 'react-native';
const App = () => {
// Daftar URL gambar
interface ImageItem {
id: string;
uri: string;
}
const images = [
{ id: '1', uri: 'https://www.starstudio.co.id/uploads/products/20230710141254-2023-07-10products141245.jpg' },
{ id: '2', uri: 'https://placekitten.com/250/300' },
{ id: '3', uri: 'https://placekitten.com/300/300' },
{ id: '4', uri: 'https://placekitten.com/350/300' },
{ id: '5', uri: 'https://placekitten.com/400/300' },
{ id: '6', uri: 'https://placekitten.com/450/300' },
];
// Render item untuk FlatList
const renderItem = ({ item }: { item: ImageItem }) => (
<View style={styles.imageContainer}>
<Image source={{ uri: item.uri }} style={styles.image} />
<Text style={styles.caption}>Image {item.id}</Text>
</View>
);
return (
<View style={styles.container}>
<FlatList
data={images}
keyExtractor={(item) => item.id}
renderItem={renderItem}
numColumns={2} // Tampilkan gambar dalam 2 kolom
contentContainerStyle={styles.listContainer}
/>
</View>
);
};
// Gaya untuk komponen
const styles = StyleSheet.create({
container: {
flex: 1,
backgroundColor: '#f8f8f8',
padding: 10,
},
listContainer: {
alignItems: 'center',
},
imageContainer: {
margin: 10,
backgroundColor: '#fff',
borderRadius: 8,
overflow: 'hidden',
elevation: 3, // Bayangan di Android
shadowColor: '#000', // Bayangan di iOS
shadowOffset: { width: 0, height: 2 },
shadowOpacity: 0.1,
shadowRadius: 4,
},
image: {
width: 150,
height: 150,
resizeMode: 'cover',
},
caption: {
textAlign: 'center',
padding: 5,
fontSize: 14,
color: '#333',
},
});
export default App;
Data Gambar:
images adalah array objek yang berisi id dan uri gambar. Anda bisa mengganti URL gambar dengan URL lain atau menggunakan gambar lokal.FlatList:
data: Sumber data (array gambar).renderItem: Fungsi yang menentukan bagaimana setiap item (gambar) akan ditampilkan.numColumns: Mengatur jumlah kolom dalam grid.Image:
Image untuk menampilkan gambar dari URL melalui prop source={{ uri: item.uri }}.Styling:
Gambar ditampilkan dalam format grid 2 kolom, dengan teks deskripsi di bawah setiap gambar. Anda bisa menambahkan lebih banyak gambar ke array images untuk menguji performa aplikasi.
Jika Anda memiliki banyak gambar, gunakan pagination atau lazy loading untuk meningkatkan performa.