Crear un carrusel con ScrollView horizontal
Clase 12 de 23 • Curso de Fundamentos de React Native
Contenido del curso
Módulo 2: Construcción de la Interfaz de Usuario
- 5

Uso de constantes y condicionales en archivos TSX de React Native
10:36 min - 6

Componentes reutilizables en React Native
14:50 min - 7

StyleSheet y Flexbox en React Native
11:24 min - 8

Paleta de colores con hooks en React Native
13:07 min - 9

useState para interfaces dinámicas en React Native
12:12 min - 10

Estado interactivo en React Native con useCallback
13:24 min - 11

Pressable vs TouchableOpacity en React Native
09:37 min
Módulo 3: Interactividad y Manejo de Datos
- 12

Crear un carrusel con ScrollView horizontal
Viendo ahora - 13

Diferencias entre ScrollView y FlatList para listas grandes
09:47 min - 14

Instalación de Async Storage para persistencia de datos en React Native
14:54 min - 15

Context y Provider para estado global de hábitos
12:08 min - 16

Context y provider para persistir hábitos en React Native
13:19 min - 17

React Native: Provider de animación con confetti
11:58 min - 18

Cómo crear una ExploreCard específica para iOS y Android
09:48 min - 19

Implementación del tab Explore con FlatList y carga asíncrona
12:49 min - 20

Contexto de perfil con persistencia y avatar aleatorio usando IA
12:32 min - 21

Cámara y galería en React Native
16:01 min
Módulo 4: Visualización de Listas y Contenido
Construye un carrusel horizontal de hábitos sugeridos en la pestaña Explore con una experiencia ágil y clara. Aquí verás cómo crear el componente QuickAddChips con ScrollView, capturar selecciones con useState y renderizar lo elegido con FlatList. Todo centrado en componentización, manejo de estado y renderizado eficiente de listas.
¿Cómo crear un carrusel horizontal con ScrollView?
Para un carrusel de sugerencias, crea el componente QuickAddChips. La idea es mapear un arreglo de hábitos y mostrarlos como chips presionables. Define una prop onPick para notificar el hábito elegido y oculta la barra de scroll para una UI limpia. El carrusel se logra con ScrollView horizontal, showsHorizontalScrollIndicator: false y un ligero padding.
import React from 'react'; import { ScrollView, Pressable, Text, StyleSheet } from 'react-native'; type Suggestion = { title: string }; // Arreglo de sugerencias: define tus hábitos aquí. const suggestions: Suggestion[] = [ // { title: '...' }, ]; interface Props { onPick?: (title: string) => void; // callback para el hábito seleccionado. } export function QuickAddChips({ onPick = () => {} }: Props) { return ( <ScrollView horizontal showsHorizontalScrollIndicator={false} contentContainerStyle={{ paddingHorizontal: 16 }} > {suggestions.map((s) => ( <Pressable key={s.title} // ID por título para identificar el chip. onPress={() => onPick(s.title)} style={styles.chip} > <Text>{s.title}</Text> </Pressable> ))} </ScrollView> ); } const styles = StyleSheet.create({ chip: { borderWidth: 1, borderColor: '#ddd', borderRadius: 999, paddingVertical: 8, paddingHorizontal: 12, marginRight: 8, }, });
¿Qué props clave usar?
- horizontal: activa el carrusel horizontal.
- showsHorizontalScrollIndicator: false para ocultar la barra.
- contentContainerStyle: padding para respiración visual.
- key con el título: identificador único por chip.
- onPress en Pressable: ejecuta onPick con el título.
¿Cómo capturar selecciones y administrar el estado con useState?
En Explore, necesitas registrar lo que el usuario selecciona. Usa useState para un arreglo de hábitos sugeridos elegidos y pásale al componente QuickAddChips un callback que agregue ítems al estado. Además, incluye textos guía como “Sugerencias rápidas” y “Seleccionados” para claridad.
import React, { useState } from 'react'; import { View, Text } from 'react-native'; import { QuickAddChips } from './QuickAddChips'; export function ExploreScreen() { const [selected, setSelected] = useState<string[]>([]); return ( // Si usas un contenedor reusable screen, envuélvelo aquí. <View style={{ flex: 1, padding: 16 }}> <Text style={{ fontSize: 16, fontWeight: '600' }}>Sugerencias rápidas</Text> <QuickAddChips onPick={(title) => setSelected((prev) => [...prev, title])} /> <Text style={{ marginTop: 16, fontSize: 16, fontWeight: '600' }}>Seleccionados</Text> {/* FlatList irá aquí para mostrar lo elegido. */} </View> ); }
¿Cómo integrar el componente en Explorer?
- Importa QuickAddChips desde su archivo.
- Declara el estado con useState para los seleccionados.
- Pasa onPick para agregar títulos al estado.
- Muestra textos guía para la sección.
¿Cómo listar hábitos seleccionados con FlatList?
Para renderizar lo seleccionado de forma declarativa y eficiente, usa FlatList. Define la data con tu estado, una keyExtractor basada en el título y un renderItem que muestre cada ítem. Si la lista está vacía, expón un ListEmptyComponent con el mensaje “toca un chip para añadir”.
import React from 'react'; import { FlatList, Text } from 'react-native'; // Dentro de ExploreScreen, debajo de “Seleccionados”. <FlatList data={selected} keyExtractor={(t) => t} renderItem={({ item }) => <Text>- {item}</Text>} ListEmptyComponent={<Text>toca un chip para añadir.</Text>} style={{ marginTop: 8 }} />
¿Qué detalles cuidan la experiencia?
- ID por título: simplifica claves únicas y evita colisiones.
- Mensaje de lista vacía: guía la interacción cuando no hay datos.
- Estilos con borde y espaciado: chips claros y legibles.
- Scroll horizontal sin barra: interfaz más limpia.
- Componentización: QuickAddChips se reutiliza y mantiene el código ordenado.
¿Te gustaría ver otra variante de chips o cómo manejar duplicados en el estado? Comparte tus dudas y comenta qué hábito agregarías primero.