Cursos / Informática para Internet / Desenvolvimento para Dispositivos Móveis / Aula
Continuando o conhecimento sobre listas, entraremos agora no * Section List**.
O que difere o FlatList do Section List é o fato de que um faz a listagem em sequência e o outro divide em seções em sua visualização.
Assim como na listagem com FlatList, precisamos de dados para listar na tela. Para fazer isso, iremos criar um conjuto de dados, porém, dessa vez terá um novo formato: cada seção terá um título e um conjunto de dados associados a ela.
Abaixo podemos ver um exemplo:
const DATA = [
{ title: "Pratos principais", data: ["Pizza", "Burger", "Risoto"] },
{ title: "Entradas", data: ["Batata Frita", "Onion Rings"] },
{ title: "Sobremesas", data: ["Sorvete de Creme", "Petit Gateau"] }
]
Assim como no FlatList, o SectionList necessita de uma pequena configuração que é feita através dos parâmetros.
Assim como no FlatList, existe o parâmetro renderItem, o qual recebe um componente que será utilizado para representar a renderização de um único item, uma espécie de modelo.
Então, criaremos o componente abaixo:
function Item(props) {
return (
<View style={{ height: 30, backgroundColor: '#AFC', padding: 10, margin: 10 }}>
<Text>{props.title}</Text>
</View>
)
}
Até agora, não dividimos nossa lista em seções no momento da visualização. Para fazer isso, precisamos desse terceiro parâmetro que recebe também um componente.
É usado pela mesma razão dita no FlatList: identificação única de cada objeto.
Acompanhando toda a aula, configurando o componente e implementando o código, ao final, seu arquivo deverá ser como se observa abaixo:
import React from 'react';
import { SafeAreaView, View, Text, SectionList } from 'react-native';
const DATA = [
{
title: "Pratos principais",
data: ["Pizza", "Burger", "Risoto"]
},
{
title: "Entradas",
data: ["Batata Frita", "Onion Rings"]
},
{
title: "Sobremesas",
data: ["Sorvete de Creme", "Petit Gateau"]
}
]
function Item(props) {
return (
<View style={{ height: 60, backgroundColor: '#AFC', padding: 10, margin: 10 }}>
<Text>{props.title}</Text>
</View>
)
}
export default function App() {
return (
<SafeAreaView>
<SectionList
style={{ margin: 8 }}
sections={DATA}
renderItem={it => <Item title={it.item} />}
renderSectionHeader={(item) => <Text style={{ fontSize: 20 }}>{item.section.title}</Text>}
keyExtractor={(item, index) => item + index}
/>
</SafeAreaView>
);
}
Versão 5.3 - Todos os Direitos reservados