Svelte 5 Runes im direkten Vergleich mit Svelte 4

Svelte 5 Runes

Svelte 5 Runes: $state, $derived, $effect, $props | We.Inc

Jede Svelte 5 Rune mit dem Svelte-4-Code, den sie ersetzt: $state, $derived, $effect, $props und $bindable, dazu die neue Event- und Snippet-Syntax. Beispiele zum Kopieren.

Runes sind die Compiler-Schlüsselwörter, die Svelte 5 für Reaktivität verwendet. $state deklariert eine reaktive Variable, $derived berechnet einen Wert aus anderem State, $effect führt Code aus, nachdem die Seite aktualisiert wurde, $props liest Komponenten-Props und $bindable markiert eine Prop, an die sich eine Elternkomponente binden darf. Sie ersetzen das reaktive let, das $:-Label und export let aus Svelte 4.

Svelte-4-Syntax und die Rune, die sie ersetzt

Wähle eine Rune, um eine Svelte-4-Komponente und ihre Umsetzung in Svelte 5 zu sehen. Beide Varianten eines Paars verhalten sich gleich, sodass du Datei für Datei migrieren und das Ergebnis unterwegs prüfen kannst.

Häufige Fragen

Muss ich für Svelte 5 meine ganze App neu schreiben?

Nein. Svelte 5 unterstützt weiterhin die Svelte-4-Syntax, und Komponenten im alten Stil und mit Runes können in derselben App nebeneinander existieren und sich gegenseitig verwenden, sodass du Datei für Datei umstellen kannst.

Warum läuft mein $effect nicht erneut?

Svelte verfolgt nur State, der synchron innerhalb des Effekts gelesen wird. Ein Wert, der nach einem await oder in einem setTimeout-Callback gelesen wird, ist keine Abhängigkeit, und ihn zu ändern bewirkt nichts.

Kann ich einen $derived-Wert ändern?

Seit Svelte 5.25 kannst du einen abgeleiteten Wert vorübergehend neu zuweisen, was bei optimistischen Updates hilft, sofern er nicht mit const deklariert ist. Er wird neu berechnet, wenn sich seine Abhängigkeiten ändern. Frühere Versionen behandeln Deriveds als schreibgeschützt.

Was hat createEventDispatcher ersetzt?

Callback-Props. Die Kindkomponente erhält eine Funktion wie onsave über $props und ruft sie auf, und die Elternkomponente übergibt den Handler wie jedes andere Attribut.

Wie gebe ich einem Formularfeld eine eindeutige ID?

Rufe $props.id() auf, eingeführt in Svelte 5.20. Es gibt eine für die Komponenteninstanz eindeutige ID zurück, die zwischen Server und Browser übereinstimmt, und ist daher sicher für for und aria-labelledby.

$state ist standardmäßig tief

$derived muss pur bleiben

Timing und Aufräumen bei $effect

State zwischen Komponenten teilen

Ein reaktiver Store in einer .svelte.js-Datei

Eine neu zugewiesene $state-Variable lässt sich nicht direkt exportieren, exportiere also ein Objekt und ändere stattdessen seine Eigenschaften.

$state

Ein einfaches let ist im Runes-Modus nicht mehr reaktiv. Schließ den Startwert in $state ein und aktualisiere ihn wie jede Variable.

$derived

Das $:-Label hatte zwei Aufgaben. Berechnungen werden zu $derived; Svelte berechnet sie neu, wenn sich count ändert.

$effect

Seiteneffekte aus $: wandern in $effect. Er läuft im Browser nach dem DOM-Update, und sein Rückgabewert ist das Aufräumen.

$props

Alle Props kommen über eine einzige Destrukturierung an. Standardwerte, Umbenennungen und Rest-Props nutzen normale JavaScript-Syntax.

$bindable

Markiere eine Prop mit $bindable, damit eine Elternkomponente bind: darauf verwenden kann. Der Code der Elternkomponente bleibt gleich.

Events

Aus on:click wird das Attribut onclick, und eigene Events werden zu Callback-Props statt createEventDispatcher.

Snippets

Das children-Snippet ersetzt den Standard-Slot, und {@render} platziert es. Das ?. überspringt das Rendern, wenn keine children übergeben wurden.

Svelte-4-Code und seine Umsetzung in Svelte 5

Wähle eine Rune

Svelte 4

Svelte 5 mit Runes

Svelte 4 kopieren

Svelte 5 kopieren

Beispiel {n} von {v}

Kostenlos starten · Keine Kreditkarte nötig

Verwandt: Ratgeber

Produkt

Für wen

Funktionen

Ressourcen

Unternehmen

Sitemap