仅更改动态输入字段中的一个特定值

Change only one specific value from dynamic input field

我需要一些帮助。

所以我有:

 data.map( (doc) => { 
      return (
         <div>
             <div> {doc.name}</div>
             <div> {doc.age}</div>
         </div>
   )
})

这会将一些数据从 Firebase Firestore 迭代到网页中。

然后有一个输入字段可以更改年龄。

const [age, setAge] = useState(1);

const handleSubmitAge = async () => {
   const ageRef = doc(db, "user", "docID")
   await updateDoc(ageRef, {
         age : age
     });
}

.....

<div>
     <TextField
        value={age}
        onChange={ e => setAge(e.target.value)}
     />
     <Button onChange={handleSubmitAge}>
        Submit Age
     </Button>
</div

如果我想更改 doc.age,我该怎么做?如果我只是像上面这样写,那么如果有10个名字,所有的名字都会有相同的年龄。

我如何在那个“年龄”输入字段中引用“docID”,以便只有一个特定的年龄被更新到一个特定的人(姓名)?

解决方案:

谢谢 Frank van Puffelen 先生。

首先,我需要访问 data.map( (doc) => ... ) 中每个文档的文档 ID。当我们从 Firestore

获取数据时,我们可以更早地做到这一点
async () => {
            const q = query(collection(db, "collectionName"), where("category", "==", `${some condition here}`));
            const querySnapshot = await getDocs(q);
                querySnapshot.forEach((doc) => {
                setData(querySnapshot.docs.map((doc) => ({...doc.data(), id:doc.id})))
                })
        };

id:doc.id 就是给我们文档 ID 的东西。也感谢 PedroTech and Maksim Ivanov 的 youtube 教程展示了如何获取此文档 ID。