`useSelector` triggers `state_proxy_equality_mismatch` on every store update in svelte-store
I maintainer di solito rispondono entro 1 giorno
Valutazione
- Difficoltà
- 2/5
- Tempo stimato
- 1-3 ore
- Idoneità per principianti
- 78/100
- Tipo di issue
- Bug
- Chiarezza
- Specificata chiaramente
- Stato di attività
- Attiva
- Stack tecnologico
- typescript
- Ambito
- frontend
Direzione di ricerca
Inizia in packages/svelte-store/src/useSelector.svelte.ts, nel ramo di confronto indicato, quindi riproduci l'avviso con lo Svelte Playground collegato o con la configurazione @tanstack/svelte-table segnalata. Verifica l'interazione tra slice, data e defaultCompare; il lavoro è completato quando l'avviso state_proxy_equality_mismatch è scomparso e il confronto funziona correttamente negli aggiornamenti dello store.
Scritto dal modello di indicizzazione a partire dal testo della issue.
Descrizione
Describe the bug
In useSelector, slice is Proxied via $state, whereas the data resolved through selector(s) is not Proxied.
Because of this, the comparison performed by compare function (where defaultCompare is used) triggers Svelte's state_proxy_equality_mismatch warning. This causes the comparison to always return false, making this conditional branch a kind of dead code.
Steps to Reproduce the Bug or Issue
It is easiest to try out @tanstack/svelte-table v9 alpha to understand it better.
Here is the demo in Svelte Playground.
https://svelte.dev/playground/6cb4726d28594a3a9781f8a785d331fe?version=latest
<script lang="ts">
import { createTable, tableFeatures } from '@tanstack/svelte-table';
const _features = tableFeatures({});
let data = $state([{ id: 1 }]);
const table = createTable({
_features,
_rowModels: {},
get data() { return data; },
columns: [{ accessorKey: 'id', header: 'ID' }],
});
</script>
<button onclick={() => (data = [...data, { id: data.length + 1 }])}>Add</button>
{#each table.getRowModel().rows as row (row.id)}
<div>{row.original.id}</div>
{/each}
Expected behavior
Fix this warning so the comparison works right.
Screenshots or Videos
No response
Platform
@tanstack/[email protected]@tanstack/[email protected]
[email protected]
Additional context
It will probably be resolved just by changing slice variable $state to $state.raw.
This is because the slice reassigning the entire variable, so there seems to be no reason to make it a Proxy.
- Lingua principale
- TypeScript
- Stelle
- 900
- Fork
- 116
- Merge medio
- 2g 2h
- PR unite (30g)
- 6
Preparare l'ambiente
- Nessun Dockerfile né file Docker Compose
- Ha un modello di pull request
- Leggi la guida per i contributori
Come iniziare
- Leggi tutta la issue e poi la guida ai contributi del progetto.
- Commenta sulla issue per dire che te ne occupi tu — evita che due persone facciano lo stesso lavoro.
- Fai un fork del repository e lavora su un branch.
- Apri una pull request che faccia riferimento al numero della issue.
Altre issue di TanStack/store
-
useSelector wraps selected objects in $state, causing state_proxy_equality_mismatch and defeating identity comparisonForse già presa @IdrisCelik l’ha presa 21 giorni fa. Aperta
Difficoltà 2/5 1-3 ore Idoneità per principianti 85/100
I maintainer di solito rispondono entro 1 giorno
-
Missing atom docsForse già presa @looooown2006 l’ha presa 148 giorni fa. Aperta
Difficoltà 2/5 1-3 ore Idoneità per principianti 65/100
I maintainer di solito rispondono entro 1 giorno
-
Difficoltà 4/5 3-5 giorni Idoneità per principianti 58/100
I maintainer di solito rispondono entro 1 giorno
-
Difficoltà 3/5 1-2 giorni Idoneità per principianti 45/100
TanStack/store#299 · 2 commenti ·
I maintainer di solito rispondono entro 1 giorno
-
Difficoltà 3/5 1-2 giorni Idoneità per principianti 52/100
TanStack/store#323 · 2 commenti · 1 reazione ·
I maintainer di solito rispondono entro 1 giorno
Tutte le issue di TanStack/store
Issue simili
-
Add: CanalPlusSport8SK.skApertacheck:passed streams:add
Difficoltà 2/5 1-3 ore Idoneità per principianti 66/100
I maintainer di solito rispondono entro 1 giorno
-
[Bug] The shared instance selector's placeholder and no-match text ignore the display languageForse già presa Una pull request collegata a questa issue è aperta o già unita. Aperta
Difficoltà 2/5 1-3 ore Idoneità per principianti 90/100
apache/rocketmq-dashboard#5561 ·
I maintainer di solito rispondono entro 3 giorni
-
Difficoltà 2/5 1-3 ore Idoneità per principianti 68/100
CopilotKit/OpenDots#69 ·
I maintainer di solito rispondono entro 1 giorno
-
sendDefaultPii is reported as deprecated on ReactNativeOptions although dataCollection is hiddenApertaBug React-Native Waiting for: Product Owner
Difficoltà 2/5 1-3 ore Idoneità per principianti 85/100
getsentry/sentry-react-native#6830 · 1 commento ·
I maintainer di solito rispondono entro 1 giorno
-
OSCI'26
Difficoltà 2/5 1-3 ore Idoneità per principianti 68/100
GauravKarakoti/SecureFlow#1215 ·
I maintainer di solito rispondono entro 1 giorno