FirebaseExtended / FirebaseExtended/reactfire

useFirestoreCollection triggers a double render

Offen
#484 4 Kommentare 2 Reaktionen 0 zugewiesene Personen Auf GitHub ansehen
v5
Vorherrschende Sprache
TypeScript
Sterne
3.6k
Forks
403
Ø Merge
14 Std. 53 Min.
Gemergte PRs (30 T.)
5

Beschreibung

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).

Beitragsleitfaden

Beitragsleitfaden öffnen

Rechercherichtung

Start by reproducing the behavior with the useFirestoreCollection test case and compare it with the similar useUser behavior. Inspect those hook entry points to determine why fetching with Suspense causes console.log to run twice. Done means fetching data produces one render, while later renders occur only when the collection changes.

Vom Indexierungsmodell aus dem Issue-Text verfasst.

Bewertung

Tech-Stack
javascript, react
Bereich
database, frontend
Issue-Typ
Bug
Schwierigkeit
3/5
Geschätzter Aufwand
1-2 Tage
Aktivitätsstatus
Veraltet
Klarheit
Größtenteils klar
Anfängerfreundlichkeit
35/100

Neue Issues direkt in Ihr Postfach

Eine kurze Übersicht über anfängerfreundliche GitHub-Issues.