FirebaseExtended / FirebaseExtended/reactfire
useFirestoreCollection triggers a double render
- 主要语言
- TypeScript
- 星标
- 3.6k
- 派生
- 403
- 平均合并
- 14 小时 53 分钟
- 30 天内合并 PR
- 5
描述
Hi,
Seems like `useFirestoreCollection` always triggers unnecessary render when fetching data (suspense is **on**). Similar behavior is also the case for `useUser`.
There's a chance I'm simply using the API wrong, so please advise if so :)
### Version info
**React:** 17.0.2
**Firebase:** 9.1.3
**ReactFire:** 4.2.0
### Test case
```javascript
const q = /* whatever query */;
const queryResults = useFirestoreCollection(q);
console.log(queryResults);
```
### Expected behavior
`console.log` is called once.
### Actual behavior
`console.log` is called twice.
Ultimately, what I'm trying to achieve is a code similar to the one below
```javascript
const queryResults = useFirestoreCollection(query);
return queryResults.data.docs.map((d) => /* render */);
```
that renders only once when the data is fetched (and then only when there're changes in the collection).
贡献指南
调研方向
首先使用 useFirestoreCollection 测试用例复现该行为,并将其与类似的 useUser 行为进行比较。检查这些 hook 的入口点,以确定为什么使用 Suspense 获取数据会导致 console.log 运行两次。完成的标准是:获取数据产生一次渲染,之后只有在 collection 发生变化时才会再次渲染。
由索引模型根据 Issue 内容生成。
评估
- 技术栈
- javascript, react
- 领域
- database, frontend
- Issue 类型
- 缺陷
- 难度
- 3/5
- 预计耗时
- 1-2 天
- 活跃度
- 停滞
- 描述清晰度
- 基本清楚
- 新手友好度
- 35/100