En esta sección, aprenderemos cómo manejar listas en React Native y la importancia de las claves (keys) para el rendimiento y la correcta renderización de los componentes. Este conocimiento es fundamental para crear aplicaciones que manejen datos dinámicos de manera eficiente.
Conceptos Clave
- 
Listas en React Native:
- Las listas son una forma común de mostrar datos en una aplicación.
 - React Native proporciona componentes como 
FlatListySectionListpara manejar listas de manera eficiente. 
 - 
Claves (Keys):
- Las claves ayudan a React a identificar qué ítems han cambiado, han sido agregados o eliminados.
 - Las claves deben ser únicas entre los hermanos (elementos en el mismo nivel).
 
 
FlatList
FlatList es un componente de React Native que se utiliza para renderizar listas de datos de manera eficiente. A continuación, se muestra un ejemplo básico de cómo usar FlatList.
Ejemplo Básico de FlatList
import React from 'react';
import { FlatList, Text, View, StyleSheet } from 'react-native';
const DATA = [
  { id: '1', title: 'Item 1' },
  { id: '2', title: 'Item 2' },
  { id: '3', title: 'Item 3' },
];
const Item = ({ title }) => (
  <View style={styles.item}>
    <Text style={styles.title}>{title}</Text>
  </View>
);
const App = () => {
  return (
    <FlatList
      data={DATA}
      renderItem={({ item }) => <Item title={item.title} />}
      keyExtractor={item => item.id}
    />
  );
};
const styles = StyleSheet.create({
  item: {
    backgroundColor: '#f9c2ff',
    padding: 20,
    marginVertical: 8,
    marginHorizontal: 16,
  },
  title: {
    fontSize: 32,
  },
});
export default App;Explicación del Código
- 
Importaciones:
FlatList,Text,View, yStyleSheetson importados desdereact-native.
 - 
Datos:
DATAes un array de objetos que contiene los datos que se mostrarán en la lista.
 - 
Componente Item:
Itemes un componente funcional que recibetitlecomo prop y lo muestra dentro de unView.
 - 
Componente App:
FlatListse utiliza para renderizar la lista.dataes la fuente de datos para la lista.renderItemes una función que toma un ítem de datos y devuelve un componenteItem.keyExtractores una función que toma un ítem y devuelve su clave única (iden este caso).
 - 
Estilos:
stylesdefine los estilos para los componentesitemytitle.
 
SectionList
SectionList es otro componente de React Native que se utiliza para renderizar listas seccionadas. Es útil cuando necesitas agrupar ítems en secciones.
Ejemplo Básico de SectionList
import React from 'react';
import { SectionList, Text, View, StyleSheet } from 'react-native';
const DATA = [
  {
    title: 'Main dishes',
    data: ['Pizza', 'Burger', 'Risotto'],
  },
  {
    title: 'Sides',
    data: ['French Fries', 'Onion Rings', 'Fried Shrimps'],
  },
  {
    title: 'Drinks',
    data: ['Water', 'Coke', 'Beer'],
  },
  {
    title: 'Desserts',
    data: ['Cheese Cake', 'Ice Cream'],
  },
];
const Item = ({ title }) => (
  <View style={styles.item}>
    <Text style={styles.title}>{title}</Text>
  </View>
);
const App = () => {
  return (
    <SectionList
      sections={DATA}
      keyExtractor={(item, index) => item + index}
      renderItem={({ item }) => <Item title={item} />}
      renderSectionHeader={({ section: { title } }) => (
        <Text style={styles.header}>{title}</Text>
      )}
    />
  );
};
const styles = StyleSheet.create({
  item: {
    backgroundColor: '#f9c2ff',
    padding: 20,
    marginVertical: 8,
  },
  header: {
    fontSize: 32,
    backgroundColor: '#fff',
  },
  title: {
    fontSize: 24,
  },
});
export default App;Explicación del Código
- 
Importaciones:
SectionList,Text,View, yStyleSheetson importados desdereact-native.
 - 
Datos:
DATAes un array de objetos, donde cada objeto representa una sección con un título y un array de datos.
 - 
Componente Item:
- Similar al ejemplo anterior, 
Itemes un componente funcional que recibetitlecomo prop. 
 - Similar al ejemplo anterior, 
 - 
Componente App:
SectionListse utiliza para renderizar la lista seccionada.sectionses la fuente de datos para la lista.keyExtractores una función que toma un ítem y su índice y devuelve una clave única.renderItemes una función que toma un ítem de datos y devuelve un componenteItem.renderSectionHeaderes una función que toma una sección y devuelve un componenteTextpara el encabezado de la sección.
 - 
Estilos:
stylesdefine los estilos para los componentesitem,header, ytitle.
 
Ejercicio Práctico
Ejercicio
Crea una aplicación que muestre una lista de tareas pendientes utilizando FlatList. Cada tarea debe tener un título y una descripción. Asegúrate de que cada ítem tenga una clave única.
Solución
import React from 'react';
import { FlatList, Text, View, StyleSheet } from 'react-native';
const TASKS = [
  { id: '1', title: 'Comprar leche', description: 'Ir al supermercado y comprar leche' },
  { id: '2', title: 'Llamar a Juan', description: 'Llamar a Juan para discutir el proyecto' },
  { id: '3', title: 'Estudiar React Native', description: 'Completar el módulo de listas y claves' },
];
const TaskItem = ({ title, description }) => (
  <View style={styles.item}>
    <Text style={styles.title}>{title}</Text>
    <Text style={styles.description}>{description}</Text>
  </View>
);
const App = () => {
  return (
    <FlatList
      data={TASKS}
      renderItem={({ item }) => <TaskItem title={item.title} description={item.description} />}
      keyExtractor={item => item.id}
    />
  );
};
const styles = StyleSheet.create({
  item: {
    backgroundColor: '#e0f7fa',
    padding: 20,
    marginVertical: 8,
    marginHorizontal: 16,
  },
  title: {
    fontSize: 24,
    fontWeight: 'bold',
  },
  description: {
    fontSize: 16,
  },
});
export default App;Explicación del Código
- 
Datos:
TASKSes un array de objetos que contiene las tareas conid,title, ydescription.
 - 
Componente TaskItem:
TaskItemes un componente funcional que recibetitleydescriptioncomo props y los muestra dentro de unView.
 - 
Componente App:
FlatListse utiliza para renderizar la lista de tareas.dataes la fuente de datos para la lista.renderItemes una función que toma un ítem de datos y devuelve un componenteTaskItem.keyExtractores una función que toma un ítem y devuelve su clave única (iden este caso).
 - 
Estilos:
stylesdefine los estilos para los componentesitem,title, ydescription.
 
Conclusión
En esta sección, hemos aprendido cómo manejar listas en React Native utilizando FlatList y SectionList, y la importancia de las claves para la correcta renderización de los componentes. Estos conceptos son fundamentales para crear aplicaciones que manejen datos dinámicos de manera eficiente. En la siguiente sección, exploraremos cómo manejar formularios y componentes controlados en React Native.
Curso de React Native
Módulo 1: Introducción a React Native
- ¿Qué es React Native?
 - Configuración del Entorno de Desarrollo
 - Aplicación Hola Mundo
 - Entendiendo JSX
 - Componentes y Props
 
Módulo 2: Componentes Básicos y Estilizado
- Visión General de Componentes Básicos
 - Texto, Vista e Imagen
 - Estilizado con Flexbox
 - Manejo de Entrada del Usuario
 - ScrollView y ListView
 
Módulo 3: Estado y Ciclo de Vida
- Métodos de Estado y Ciclo de Vida
 - Manejo de Eventos
 - Renderizado Condicional
 - Listas y Claves
 - Formularios y Componentes Controlados
 
Módulo 4: Navegación
- Introducción a React Navigation
 - Navegador de Pila
 - Navegador de Pestañas
 - Navegador de Cajón
 - Pasando Parámetros a Rutas
 
Módulo 5: Redes y Datos
- Obteniendo Datos con Fetch API
 - Usando Axios para Solicitudes HTTP
 - Manejo de Errores de Red
 - AsyncStorage para Datos Locales
 - Integración con APIs REST
 
Módulo 6: Conceptos Avanzados
Módulo 7: Despliegue y Publicación
- Construyendo para iOS
 - Construyendo para Android
 - Publicando en App Store
 - Publicando en Google Play
 - Integración y Entrega Continua
 
