Estoy recuperando los datos de mi documento y almacenándolos en estado, pero cuando trato de representarlos, solo obtengo el primer elemento. Me doy cuenta cuando actualizo la aplicación, puedo ver los otros elementos brevemente. No estoy seguro de por qué mi mapeo no muestra todos los datos.
const [tickets, setTickets] = useState([]); useEffect(() => { GetTickets(); }, []); console.log(tickets); const db = getFirestore(); const colRef = collection(db, "Tickets"); function GetTickets() { getDocs(colRef).then((snapshot) => { let tickets = []; snapshot.docs.forEach((doc) => { tickets.push({ ...doc.data(), id: doc.id }); setTickets(tickets); }); }); } return ( <View style={GlobalStyles.container}> <Text>Previous tickets</Text> {tickets.map((ticket) => ( <Text key={ticket.id}>{ticket.form.TicketNumber}</Text> ))} </View> );En React Native, puede usar map o flatList para representar una matriz. Si está tratando de mostrar una gran cantidad de datos, es mejor usar flatList (mejor rendimiento con una gran cantidad de datos).
Reemplazar este código
{tickets.map((ticket) => ( <Text key={ticket.id}>{ticket.form.TicketNumber}</Text> ))}con este codigo
<FlatList data={tickets} renderItem={({item}) => <Text>{item.form.TicketNumber}</Text>} />Intente esto, puede ser que su estado se esté configurando antes de que sus datos se inserten en la matriz, colóquelos fuera del bucle como este
const [tickets, setTickets] = useState([]); useEffect(() => { GetTickets(); }, []); console.log(tickets); const db = getFirestore(); const colRef = collection(db, "Tickets"); function GetTickets() { getDocs(colRef).then((snapshot) => { let tickets = []; snapshot.docs.forEach((doc) => { tickets.push({ ...doc.data(), id: doc.id }); }); setTickets(tickets); }); } return ( <View style={GlobalStyles.container}> <Text>Previous tickets</Text> {tickets.map((ticket) => ( <Text key={ticket.id}>{ticket.form.TicketNumber}</Text> ))} </View> );No estoy seguro de si te ayudará, pero 2 comentarios para ayudarte en tu búsqueda:
Espero que te ayude.