Resposta do Simulado 2 Bim
import React from 'react';
import { SafeAreaView, SectionList, Text, View, StyleSheet } from 'react-native';
// 1. Dados fornecidos
const menuDoRestaurante = [
{
title: "Entradas",
data: [
{ id: '1', nome: "Pão de Alho", preco: "R$ 15,00" },
{ id: '2', nome: "Batata Frita", preco: "R$ 20,00" }
]
},
{
title: "Pratos Principais",
data: [
{ id: '3', nome: "Lasanha à Bolonhesa", preco: "R$ 45,00" },
{ id: '4', nome: "Filé Mignon", preco: "R$ 65,00" }
]
},
{
title: "Sobremesas",
data: [
{ id: '5', nome: "Pudim", preco: "R$ 12,00" }
]
}
];
const Cardapio = () => {
// 2. Renderização dos Itens (Pratos)
const renderItem = ({ item }) => (
<View style={styles.itemContainer}>
<Text style={styles.itemNome}>{item.nome}</Text>
<Text style={styles.itemPreco}>{item.preco}</Text>
</View>
);
// 3. Renderização do Cabeçalho da Seção (Categorias)
const renderSectionHeader = ({ section }) => (
<View style={styles.headerContainer}>
<Text style={styles.headerTitulo}>{section.title}</Text>
</View>
);
return (
<SafeAreaView style={styles.container}>
<SectionList
// Propriedade obrigatória para SectionList (diferente do 'data' do FlatList)
sections={menuDoRestaurante}
// 4. Performance: Extração de chaves únicas
keyExtractor={(item) => item.id}
renderItem={renderItem}
renderSectionHeader={renderSectionHeader}
// Mantém o cabeçalho fixo no topo enquanto rola os itens daquela seção
stickySectionHeadersEnabled={true}
/>
</SafeAreaView>
);
};
// Estilização
const styles = StyleSheet.create({
container: {
flex: 1,
backgroundColor: '#F8F9FA',
},
headerContainer: {
backgroundColor: '#343A40',
paddingVertical: 8,
paddingHorizontal: 16,
},
headerTitulo: {
fontSize: 18,
fontWeight: 'bold',
color: '#FFFFFF',
textTransform: 'uppercase',
},
itemContainer: {
flexDirection: 'row',
justifyContent: 'space-between',
backgroundColor: '#FFFFFF',
padding: 16,
borderBottomWidth: 1,
borderBottomColor: '#E9ECEF',
},
itemNome: {
fontSize: 16,
color: '#212529',
},
itemPreco: {
fontSize: 16,
fontWeight: 'bold',
color: '#198754',
},
});
export default Cardapio;