svelte keys
This commit is contained in:
parent
54714c609a
commit
19270f5c10
@ -37,3 +37,22 @@ Semantisch arbeiten.
|
||||
### Warum die Ursache nicht behoben wurde
|
||||
|
||||
In dem fall liegt der Programmcode fehler nicht bei uns, da die Kompillierung von svelte übernommen wird.
|
||||
|
||||
## Probleme mit Variablen werten in #each loops
|
||||
|
||||
### Problemstellung
|
||||
|
||||
Wenn in einem each block die länge der liste, über die iteriert wurde, verändert wird, kann es zu fehlern kommen, wenn kein einzigartiger key für jedes element angegeben wurde.
|
||||
|
||||
### Ursache
|
||||
|
||||
Die Ursache ist, dass svelte die liste nicht neu rendert, sondern nur die die properties neu zuordnet. Sprich ursprünglich gab es 3 Elemente El1, El2, El3. Wenn nun El1 entfernt wird, wird in der DOM tatsächlich El3 entfernt und die properties von El3 zu El2 und von El2 zu El1 zugewiesen. Das bedeutet, dass nicht reaktive variablen weiterhin den Wert von der vorherigen Komponente beeinhalten!
|
||||
|
||||
### Lösungsansatz
|
||||
|
||||
Die einfachste Lösung wäre eine Id als key zu haben, die einzigartig für das jeweilige Element ist, da svelte dann in der DOM genau das Element entfernt und nicht das letzte. Hat man das nicht und
|
||||
möchte , dass der inhalt bei Veränderung der Array länge tatsächlich neu gerendert wird, so muss man explizit ein {#key} block drum rum bauen mit den jeweiligen Wert wo es neu gerendert werden soll (key nutzt ebenfalls reactive statements....).
|
||||
|
||||
### Warum die Ursache nicht behoben wurde
|
||||
|
||||
Gibt keine Lösung, da es standard Svelte verhalten ist. Gibt nur den vorgestellten workaround
|
||||
|
Loading…
Reference in New Issue
Block a user