El componente FlatList permite renderizar listas de manera eficiente. Al habilitar la propiedad horizontal, se transforma en una lista desplazable horizontalmente, útil para crear carruseles de imágenes, menús de categorías y más.
Para crear una lista horizontal, simplemente debes agregar la propiedad horizontal={true} al componente FlatList.
import React from 'react';
import { FlatList, View, Text, StyleSheet } from 'react-native';
const datos = [
{ id: '1', nombre: 'Elemento 1' },
{ id: '2', nombre: 'Elemento 2' },
{ id: '3', nombre: 'Elemento 3' },
{ id: '4', nombre: 'Elemento 4' },
{ id: '5', nombre: 'Elemento 5' },
{ id: '6', nombre: 'Elemento 6' },
{ id: '7', nombre: 'Elemento 7' },
{ id: '8', nombre: 'Elemento 8' },
{ id: '9', nombre: 'Elemento 9' },
{ id: '10', nombre: 'Elemento 10' }
];
const App = () => {
return (
<FlatList
horizontal={true}
data={datos}
renderItem={({ item }) => (
<View style={styles.item}>
<Text>{item.nombre}</Text>
</View>
)}
keyExtractor={(item) => item.id}
/>
);
};
const styles = StyleSheet.create({
item: {
backgroundColor: '#f9c2ff',
padding: 20,
marginHorizontal: 8,
borderRadius: 10,
},
});
export default App; horizontal: Cuando se establece en true, hace que el FlatList se desplace horizontalmente.data: El array de datos a renderizar.renderItem: Función que define cómo se renderiza cada item.keyExtractor: Extrae una clave única para cada item, imprescindible cuando se usa con FlatList.showsHorizontalScrollIndicator: Controla la visibilidad del indicador de desplazamiento horizontal.contentContainerStyle: Estilo que aplica a la vista interna de la lista (útil para personalizar el espaciado o alineación).Este ejemplo muestra cómo configurar una lista que se desplaza horizontalmente con FlatList.
import React from 'react';
import { SafeAreaProvider, SafeAreaView } from 'react-native-safe-area-context';
import { FlatList, View, Text, StyleSheet } from 'react-native';
const datos = [
{ id: '1', nombre: 'Elemento 1' },
{ id: '2', nombre: 'Elemento 2' },
{ id: '3', nombre: 'Elemento 3' },
{ id: '4', nombre: 'Elemento 4' },
{ id: '5', nombre: 'Elemento 5' },
{ id: '6', nombre: 'Elemento 6' },
{ id: '7', nombre: 'Elemento 7' },
{ id: '8', nombre: 'Elemento 8' },
{ id: '9', nombre: 'Elemento 9' },
{ id: '10', nombre: 'Elemento 10' }
];
const App = () => {
return (
<SafeAreaProvider>
<SafeAreaView style={styles.safeArea}>
<FlatList
horizontal
data={datos}
renderItem={({ item }) => (
<View style={styles.item}>
<Text style={styles.text}>{item.nombre}</Text>
</View>
)}
keyExtractor={(item) => item.id}
/>
</SafeAreaView>
</SafeAreaProvider>
);
};
const styles = StyleSheet.create({
safeArea: {
flex: 1,
backgroundColor: '#fff',
paddingHorizontal: 10,
},
item: {
backgroundColor: 'orange',
padding: 20,
marginHorizontal: 8,
borderRadius: 10,
alignItems: 'center',
justifyContent: 'center',
},
text: {
fontSize: 16,
fontWeight: 'bold',
color: '#333',
},
});
export default App; Puedes personalizar el estilo del contenido de la lista usando la propiedad contentContainerStyle para agregar márgenes o alineación adicional.
<FlatList
horizontal={true}
data={datos}
renderItem={({ item }) => (
<View style={styles.item}>
<Text>{item.nombre}</Text>
</View>
)}
keyExtractor={(item) => item.id}
contentContainerStyle={{ paddingHorizontal: 20 }}
/> Para manejar una lista vacía, puedes usar la propiedad ListEmptyComponent, que mostrará un mensaje o componente cuando la lista esté vacía.
<FlatList
horizontal={true}
data={[]}
renderItem={({ item }) => (
<View style={styles.item}>
<Text>{item.nombre}</Text>
</View>
)}
keyExtractor={(item) => item.id}
ListEmptyComponent={<Text>No hay elementos</Text>}
/> Si deseas desactivar el movimiento del indicador de desplazamiento horizontal, puedes usar la propiedad scrollEnabled y establecerla en false para deshabilitar el desplazamiento.
<FlatList
horizontal={true}
data={datos}
renderItem={({ item }) => (
<View style={styles.item}>
<Text>{item.nombre}</Text>
</View>
)}
keyExtractor={(item) => item.id}
scrollEnabled={false}
/> El FlatList horizontal es una poderosa herramienta en React Native para crear listas desplazables horizontalmente. Usando la propiedad horizontal, puedes transformar cualquier lista en una experiencia de desplazamiento horizontal eficiente.
Es importante tener en cuenta que a diferencia de otras opciones, FlatList solo renderiza los elementos visibles, lo que optimiza el rendimiento incluso con grandes listas de datos.
Recuerda siempre aprovechar propiedades como contentContainerStyle y ListEmptyComponent para personalizar tu lista y mejorar la experiencia del usuario.