Trong ví dụ này sẽ sử dụng dữ liệu ở trong một biến mảng cục bộ, khi có tương tác API thì có thể thay thế mảng bằng dữ liệu lấy từ API về là hiển thị được.
Các component được import vào ứng dụng:
import React from 'react';
import {
SafeAreaView,
View,
FlatList,
StyleSheet,
Text,
StatusBar,
} from 'react-native';
Bước 1: Tạo dữ liệu nguồn
const DATA = [
{
id: '1',
ten_sp: 'First Item',
},
{
id: '2',
ten_sp: 'Second Item',
},
{
id: '3',
ten_sp: 'Third Item',
}
];
Sau này lấy dữ liệu từ API về chỉ cần thay thế vào biến DATA và tùy chỉnh hiển thị cho từng dòng là được.
Bước 2: Tạo component để hiển thị dòng
const Item = ({sp}) => (
<View style={styles.item}>
<Text style={styles.title}>{sp.ten_sp}</Text>
<Text style={styles.title}>{sp.id}</Text>
</View>
);
Component này dùng để tùy chỉnh nội dung cho từng dòng. Nếu có tương tác gì với từng dòng thì viết code ở trong component này.
Bước 3: Trong hàm App sử dụng component Flatlist
const App = () => {
return (
<SafeAreaView style={styles.container}>
<FlatList
data={DATA}
renderItem={({item}) => <Item sp={item} />}
keyExtractor={item => item.id}
/>
</SafeAreaView>
);
};
export default App;
Trong thẻ FlatList cần chú ý phải có tối thiểu 3 thuộc tính: data, renderItem, keyExtractor
– data: là danh sách dữ liệu
– renderItem: Chỉ định component sẽ trình bày từng dòng
– keyExtractor: chỉ định một giá trị dùng để phân biệt giữa các dòng, thông thường là ID của phần tử trong danh sách DATA
Bước 4: Định nghĩa style
const styles = StyleSheet.create({
container: {
flex: 1,
marginTop: StatusBar.currentHeight || 0,
},
item: {
backgroundColor: '#f9c2ff',
padding: 20,
marginVertical: 8,
marginHorizontal: 16,
},
title: {
fontSize: 32,
},
});