【发布时间】:2021-07-02 00:03:09
【问题描述】:
我有一种情况,我有一个包含所有书籍的对象,我想获取位于不同集合中的作者信息。我尝试在 useMemo 中获取数据,但我收到了一个错误,因为我猜这个 promise 没有得到解决。如何让useMemo等待作者的数据到来?
async function useAuthor(authorID:string) {
await firestore.collection('users').doc(authorID).get().then(doc => {
return doc.data();
})
};
const normalizedBooks = useMemo(
() =>
books?.map( (book) => ({
...book,
author: useAuthor(book.authorId),
})),
[books]
);
【问题讨论】:
-
useAuthor是自定义的 React 钩子吗?还是真的只是一个async实用函数? -
只是一个异步函数
-
use*命名约定仅用于实际挂钩(使用至少一个内置挂钩或由执行此操作的自定义挂钩组成的函数)。 “如何让 useMemo 等待数据来给作者?” 你不应该首先这样做。获取数据的方法是初始化一个没有(或为空)数据的状态,并在useEffect中获取所需的数据。在获取组件期间,应显示占位符或加载指示器或类似的东西。组件的渲染不应该有任何异步阻塞。
标签: javascript reactjs firebase react-hooks