首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >在创建reactfire钩子时避免重复调用

在创建reactfire钩子时避免重复调用
EN

Stack Overflow用户
提问于 2020-09-05 23:36:08
回答 1查看 96关注 0票数 0

当使用reactfire初始化一个组件时,每次我添加一个reactfire钩子(例如useFirestoreDocData)时,它都会触发一个重新渲染,因此会重复之前的所有初始化。例如:

代码语言:javascript
复制
const MyComponent = props => {
  console.log(1);
  const firestore = useFirestore();
  console.log(2);
  const ref = firestore.doc('count/counter');
  console.log(3);
  const { value } = useFirestoreDocDataOnce(ref);
  console.log(4);
  ...
  return <span>{value}</span>;
};

将输出:

代码语言:javascript
复制
1
1
2
3
1
2
3
4

这看起来很浪费,有没有办法避免呢?

当我需要一个reactfire挂钩的结果来创建另一个reactfire挂钩(例如,从一个文档中检索数据以确定要读取哪个其他文档),并且它复制服务器调用时,这是特别有问题的。

EN

回答 1

Stack Overflow用户

发布于 2020-10-08 14:27:55

请参阅React的悬念文档。具体部分:Approach 3: Render-as-You-Fetch (using Suspense)

Reactfire使用这种机制。即使该行被多次执行,它也不应该为每个调用提取多次。fetch背后的机制“理解”fetch已经完成,并将开始下一次。

在你的例子中,react尝试渲染你的组件,查看它需要获取,停止渲染,并在获取时显示suspense的回退。当fetch完成时,它会重试渲染你的组件,当fetch完成时,它将完全渲染。

您可以在网络选项卡中确认每个呼叫只进行一次。

我希望我说得很清楚,如果我不清楚,请不要犹豫,询问更多细节。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/63755656

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档