Tengo una pantalla que enumera las "tareas" y todas son el mismo componente <TaskItem> solo que se les envían diferentes accesorios.
Cada <TaskItem> se crea mediante la iteración de documentos en una colección de base de datos de Firestore.
Quiero acceder al doc().id del individuo cuando se hace clic en él.
Mi pregunta es: ¿Cómo puedo acceder al doc().id para cada <TaskItem> en particular después de que se procesan? ¿Este doc().id está adjunto o almacenado de alguna manera con <TaskItem> cuando se crea?
tasks1 las tareas del backend y crea una matriz para usar el map en
db.collection('users').doc(id).collection('tasks').onSnapshot((snapshot)=>{ const tempTasks = []; snapshot.forEach( doc => { tempTasks.push(doc.data()); } ) setTasks(tempTasks); });Estructura de la base de datos de Firestore
db.collection('users').doc(id).collection('tasks').doc().id Itero, usando el map sobre 'tareas' y creo un <TaskItem> para cada elemento de 'tareas' en la base de datos. ¿Está el doc () .id para cada uno almacenado con él o de alguna manera tengo que acceder manualmente?
<View style={styles.tasks}> {tasks1.map((task) => { return ( <View style={{ margin: 4}}> <TaskItem //PROPS notes={task.notes} reminder={task.reminder} name={task.name} assigned={task.assigned} tagName = {task.tag} profileImage={task.profileImage} color={task.color} changeModal={() => changeStateHandler()} onPress={()=>setTagClicked(!tagClicked)} /> </View> ); })} </View>Después de usar .data() , su objeto solo contiene los campos que ha almacenado en Firestore. Puede tener tanto los datos como la identificación del documento agregando algunas líneas, como esta:
doc => { var newData = doc.data(); newData.id = doc.id; tempTasks.push(newData); }