如何在不未定义的情况下将 auth uid 作为查询参数传递?

How to pass auth uid as a query parameter without getting undefined?

我正在使用 react-query-firebase 库对文档进行查询。

根据文档,这是您进行查询的方式:

  const ref = doc(firestore, 'users', id);

  const product = useFirestoreDocument(["users", id], ref);

一切 工作 当我像这样手动设置 id:

const id = "pW5CizOJOpXezr5lGGsh";

但是我想动态设置 uid 并且我也在使用 auth state hook:

const user = useAuthUser(["user"], auth);
const ref = doc(firestore, "users", user.data.uid);

问题是在页面加载时用户初始化为未定义,我需要等待一瞬间 user.data.uid 来填充,因此我得到TypeError: Cannot read property 'indexOf' of undefined

有没有一种方法可以跳过查询,直到用户完成加载,然后才进行查询。

使用 react-query,您通常只需 disable 查询,直到您通过 enabled 属性:

获得所有依赖项
useQuery(["users", id], ref, { enabled: Boolean(id) }

这在 dependent queries section of the docs 中有记载。