`shallow` doesn't correctly compare different object instances if they only have property getters

Offen
#218 0 Kommentare 2 Reaktionen 0 zugewiesene Personen Auf GitHub ansehen

Maintainer antworten meist innerhalb von 1 Tag

@jiji-hoon96 arbeitet bereits daran.

Seit 13.8.2025.

  • #222 von @jiji-hoon96 — offen

Bewertung

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

Rechercherichtung

Beginne damit, die shallow-Implementierung des Stores und die vorhandenen Tests zu finden. Reproduziere den gemeldeten Vergleich mit zwei unterschiedlichen Objekten, die Werte über Getter bereitstellen, füge anschließend Testabdeckung hinzu und passe das Verhalten so an, dass unterschiedliche Instanzen nicht als gleich behandelt werden; die relevanten Tests sollten danach bestehen.

Vom Indexierungsmodell aus dem Issue-Text verfasst.

Beschreibung

Describe the bug

I'm using @tanstack/react-form, but traced the issue back to the store here. Specifically, I'm trying to store Temporal.Duration values, but store updates are not being received via useStore because shallow returns true when both objects have no keys, i.e. Object.keys(objA) return [], instead of comparing referential equality at that point.

Steps to Reproduce the Bug or Issue

This, and any object factory that use getters instead of static properties return true.

shallow(Temporal.Duration.from({ hours: 1 }), Temporal.Duration.from({ days: 2 }));
Expected behavior

Expect to see false, since they are different values, different objects.

Screenshots or Videos

No response

Platform
  • OS: macOS
  • Browser: Arc (Chromium)
  • Version: 138.0
Additional context

No response

Vorherrschende Sprache
TypeScript
Sterne
912
Forks
118
Ø Merge
11 Std. 48 Min.
Gemergte PRs (30 T.)
10

Entwicklungsumgebung

Erste Schritte

  1. Lesen Sie das ganze Issue und danach den Beitragsleitfaden des Projekts.
  2. Schreiben Sie ins Issue, dass Sie es übernehmen — das erspart doppelte Arbeit.
  3. Forken Sie das Repository und arbeiten Sie in einem Branch.
  4. Öffnen Sie einen Pull Request, der die Issue-Nummer nennt.

Mehr aus TanStack/store

Alle Issues in TanStack/store

Ähnliche Issues

Weitere Issues zu TypeScript

Neue Issues direkt in Ihr Postfach

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