firebase 如何使用useParams中的id从firestore中获取单个文档

x759pob2  于 2023-04-07  发布在  其他
关注(0)|答案(1)|浏览(116)

我正在构建一个Web应用程序,您可以在其中看到体操运动员的列表。当您单击体操运动员的名字时,您会在useParams钩子的帮助下移动到该特定的体操运动员页面。在该页面上,我想在该ID的帮助下从Firestore获取相关文档。不幸的是,我得到了一个可能与Typescript相关的错误。我得到了以下错误:

如何使下面的代码工作?

export const GymnastPage = () => {
  const { id } = useParams();
  
  const docRef = doc(db, "GymnastsByCoach", user.uid, "Gymnasts", id)
  
  onSnapshot(docRef, (doc) => {
    console.log(doc.data(), doc.id)
  });
  
  return()
};

当我硬编码文档的ID而不是从useParams获取ID时,代码可以工作。

ycggw6v2

ycggw6v21#

我很确定useParams正在异步地设置状态中的id。在这种情况下,您必须使用useEffect来使您的代码在设置id时做出响应:

useEffect(() => {
  const docRef = doc(db, "GymnastsByCoach", user.uid, "Gymnasts", id)
  
  onSnapshot(docRef, (doc) => {
    console.log(doc.data(), doc.id)
  });
}, [id]);

现在,从Firestore加载的代码将在设置id值后运行。

相关问题