Les runes de Svelte 5, comparées à Svelte 4

Runes de Svelte 5

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

Chaque rune de Svelte 5 avec le code Svelte 4 qu'elle remplace : $state, $derived, $effect, $props et $bindable, plus la nouvelle syntaxe des événements et des snippets. Des exemples prêts à copier.

Les runes sont les mots-clés du compilateur que Svelte 5 utilise pour la réactivité. $state déclare une variable réactive, $derived calcule une valeur à partir d'autres états, $effect exécute du code après la mise à jour de la page, $props lit les props du composant et $bindable marque une prop à laquelle un parent peut se lier. Elles remplacent le let réactif, le label $: et export let de Svelte 4.

La syntaxe Svelte 4 et la rune qui la remplace

Choisissez une rune pour voir un composant Svelte 4 et sa réécriture en Svelte 5. Chaque paire se comporte de la même façon : vous pouvez donc migrer un fichier à la fois et vérifier le résultat au fur et à mesure.

Questions fréquentes

Faut-il réécrire toute mon application pour Svelte 5 ?

Non. Svelte 5 prend toujours en charge la syntaxe de Svelte 4, et les composants à l'ancienne et ceux à base de runes peuvent cohabiter dans la même application et s'utiliser mutuellement : vous pouvez donc convertir les fichiers un par un.

Pourquoi mon $effect ne se relance-t-il pas ?

Svelte ne suit que l'état lu de façon synchrone dans l'effet. Une valeur lue après un await ou dans un callback de setTimeout n'est pas une dépendance : la modifier ne déclenche donc rien.

Peut-on modifier une valeur $derived ?

Depuis Svelte 5.25, vous pouvez réassigner temporairement une valeur dérivée, ce qui aide pour les mises à jour optimistes, sauf si elle est déclarée avec const. Elle se recalcule quand ses dépendances changent. Les versions antérieures traitent les valeurs dérivées en lecture seule.

Qu'est-ce qui remplace createEventDispatcher ?

Les props de callback. L'enfant reçoit une fonction comme onsave via $props et l'appelle, et le parent passe le gestionnaire comme n'importe quel autre attribut.

Comment donner un id unique à un champ de formulaire ?

Appelez $props.id(), ajouté dans Svelte 5.20. Il renvoie un id propre à l'instance du composant, identique côté serveur et navigateur : il est donc sûr pour for et aria-labelledby.

$state est profond par défaut

$derived doit rester pur

Timing et nettoyage de $effect

Partager de l'état entre composants

Un store réactif dans un fichier .svelte.js

Une variable $state réassignée ne peut pas être exportée directement : exportez plutôt un objet et modifiez ses propriétés.

$state

Un let simple n'est plus réactif en mode runes. Enveloppez la valeur de départ dans $state et modifiez-la comme n'importe quelle variable.

$derived

Le label $: avait deux rôles. Les calculs deviennent des $derived ; Svelte les recalcule quand count change.

$effect

Les effets de bord de $: passent dans $effect. Il s'exécute dans le navigateur après la mise à jour du DOM, et sa valeur de retour sert au nettoyage.

$props

Toutes les props arrivent via une seule instruction de déstructuration. Valeurs par défaut, renommages et props rest utilisent la syntaxe JavaScript normale.

$bindable

Marquez une prop avec $bindable pour qu'un parent puisse utiliser bind: dessus. Le code du parent reste le même.

Événements

on:click devient l'attribut onclick, et les événements personnalisés deviennent des props de callback au lieu de createEventDispatcher.

Snippets

Le snippet children remplace le slot par défaut, et {@render} le place. Le ?. évite le rendu quand aucun enfant n'a été passé.

Code Svelte 4 et sa réécriture en Svelte 5

Choisissez une rune

Svelte 4

Svelte 5 avec les runes

Copier Svelte 4

Copier Svelte 5

Exemple {n} sur {v}

Commencer gratuitement · Sans carte bancaire

Voir aussi: Guides

Produit

Pour qui

Fonctionnalités

Ressources

Entreprise

Plan du site