Svelte 5-runes, naast Svelte 4

Svelte 5-runes

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

Elke Svelte 5-rune met de Svelte 4-code die hij vervangt: $state, $derived, $effect, $props en $bindable, plus de nieuwe syntax voor events en snippets. Voorbeelden om te kopiëren.

Runes zijn de compiler-keywords die Svelte 5 voor reactiviteit gebruikt. $state declareert een reactieve variabele, $derived berekent een waarde uit andere state, $effect voert code uit nadat de pagina is bijgewerkt, $props leest component-props en $bindable markeert een prop waaraan een parent mag binden. Ze vervangen de reactieve let, het $:-label en export let uit Svelte 4.

Svelte 4-syntax en de rune die hem vervangt

Kies een rune om een Svelte 4-component en de herschreven versie in Svelte 5 te zien. Elk paar gedraagt zich hetzelfde, dus u kunt bestand voor bestand migreren en het resultaat onderweg controleren.

Veelgestelde vragen

Moet ik mijn hele app herschrijven voor Svelte 5?

Nee. Svelte 5 ondersteunt nog steeds de Svelte 4-syntax, en componenten in de oude stijl en componenten met runes kunnen in dezelfde app naast elkaar bestaan en elkaar gebruiken, dus u kunt bestanden een voor een omzetten.

Waarom draait mijn $effect niet opnieuw?

Svelte volgt alleen state die synchroon binnen het effect wordt gelezen. Een waarde die na een await of in een setTimeout-callback wordt gelezen is geen dependency, dus het wijzigen ervan doet niets.

Kan ik een $derived-waarde wijzigen?

Sinds Svelte 5.25 kunt u een derived waarde tijdelijk opnieuw toewijzen, wat helpt bij optimistic updates, tenzij hij met const is gedeclareerd. Hij wordt herberekend zodra zijn dependencies veranderen. Eerdere versies behandelen deriveds als alleen-lezen.

Wat heeft createEventDispatcher vervangen?

Callback-props. Het child ontvangt via $props een functie zoals onsave en roept die aan, en de parent geeft de handler mee zoals elk ander attribuut.

Hoe geef ik een formulierveld een uniek id?

Roep $props.id() aan, toegevoegd in Svelte 5.20. Het geeft een id terug dat uniek is voor de componentinstantie en tussen server en browser overeenkomt, dus het is veilig voor for en aria-labelledby.

$state is standaard diep

$derived moet puur blijven

Timing en opruimen bij $effect

State delen tussen componenten

Een reactieve store in een .svelte.js-bestand

Een $state-variabele die opnieuw wordt toegewezen kan niet direct worden geëxporteerd, dus exporteer een object en wijzig in plaats daarvan de properties ervan.

$state

Een gewone let is in runes-modus niet meer reactief. Verpak de beginwaarde in $state en werk hem bij zoals elke variabele.

$derived

Het $:-label deed twee taken. Berekeningen worden $derived; Svelte herberekent ze wanneer count verandert.

$effect

Side effects uit $: verhuizen naar $effect. Het draait in de browser nadat de DOM is bijgewerkt, en de returnwaarde is het opruimwerk.

$props

Alle props komen binnen via één destructuring-statement. Standaardwaarden, hernoemingen en rest-props gebruiken gewone JavaScript-syntax.

$bindable

Markeer een prop met $bindable zodat een parent er bind: op kan gebruiken. De code van de parent blijft hetzelfde.

Events

on:click wordt het onclick-attribuut, en eigen events worden callback-props in plaats van createEventDispatcher.

Snippets

De children-snippet vervangt de standaardslot, en {@render} plaatst hem. De ?. slaat het renderen over als er geen children zijn meegegeven.

Svelte 4-code en de herschreven versie in Svelte 5

Kies een rune

Svelte 4

Svelte 5 met runes

Svelte 4 kopiëren

Svelte 5 kopiëren

Voorbeeld {n} van {v}

Gratis beginnen · Geen creditcard nodig

Gerelateerd: Gidsen

Product

Voor wie

Functies

Bronnen

Bedrijf

Sitemap