Tenho um armazenamento simples de new Map()
e gosto de iterá-lo no componente Svelte. No bloco {#each}, posso ver que ele itera quantas vezes o Map tem elementos, mas não consigo ver valores.
<script>
import {items} from "./store.js"
$items.set("one", { name: "John", age: 50 })
$items.set("two", { name: "Jack", age: 25 })
</script>
<h1>Hello!</h1>
{#each $items as item}
<div>name: {item.name}</div>
{/each}
// store.js
import {writable, get} from "svelte/store"
export let items = writable(new Map())
Se você iterar,
Map
obterá[key, value]
objetos, então você precisa:Se você precisar apenas das chaves ou dos valores, também existem as respectivas funções
keys()
/values()
, então para o código fornecido você pode usar:Além disso,
Map
não é reativo, então, a menos que você acione a loja manualmente, modificações posteriores não atualizarão a UI. O Svelte 5 tem uma versão reativa deMap
emsvelte/reactivity
.