Runy Svelte 5 obok kodu ze Svelte 4

Runy Svelte 5

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

Każda runa Svelte 5 z kodem ze Svelte 4, który zastępuje: $state, $derived, $effect, $props i $bindable, a także nowa składnia zdarzeń i snippetów. Przykłady gotowe do skopiowania.

Runy to słowa kluczowe kompilatora, których Svelte 5 używa do reaktywności. $state deklaruje reaktywną zmienną, $derived wylicza wartość z innego stanu, $effect uruchamia kod po aktualizacji strony, $props odczytuje propsy komponentu, a $bindable oznacza props, do którego rodzic może się zbindować. Zastępują one reaktywne let ze Svelte 4, etykietę $: oraz export let.

Składnia Svelte 4 i runa, która ją zastępuje

Wybierz runę, aby zobaczyć komponent w Svelte 4 i jego wersję przepisaną na Svelte 5. Każda para działa tak samo, więc możesz migrować plik po pliku i na bieżąco sprawdzać wynik.

Najczęściej zadawane pytania

Czy muszę przepisać całą aplikację na Svelte 5?

Nie. Svelte 5 nadal obsługuje składnię Svelte 4, a komponenty w starym stylu i oparte na runach mogą działać w tej samej aplikacji i korzystać ze siebie nawzajem, więc możesz konwertować pliki jeden po drugim.

Dlaczego mój $effect nie uruchamia się ponownie?

Svelte śledzi tylko stan odczytany synchronicznie wewnątrz efektu. Wartość odczytana po await lub wewnątrz callbacku setTimeout nie jest zależnością, więc jej zmiana nic nie robi.

Czy mogę zmienić wartość $derived?

Od Svelte 5.25 możesz tymczasowo przypisać nową wartość do wartości wyliczanej, co pomaga przy optymistycznych aktualizacjach, chyba że jest zadeklarowana przez const. Przelicza się ona, gdy zmienią się jej zależności. Wcześniejsze wersje traktują wartości wyliczane jako tylko do odczytu.

Co zastąpiło createEventDispatcher?

Propsy z callbackami. Dziecko otrzymuje funkcję, na przykład onsave, przez $props i ją wywołuje, a rodzic przekazuje handler jak każdy inny atrybut.

Jak nadać polu formularza unikalne id?

Wywołaj $props.id(), dodane w Svelte 5.20. Zwraca id unikalne dla instancji komponentu, zgodne między serwerem a przeglądarką, więc można go bezpiecznie używać w for i aria-labelledby.

$state jest domyślnie głęboki

$derived musi pozostać czysty

Moment uruchomienia $effect i sprzątanie

Współdzielenie stanu między komponentami

Reaktywny store w pliku .svelte.js

Zmiennej $state, do której przypisujesz nowe wartości, nie można wyeksportować bezpośrednio, więc eksportuj obiekt i zmieniaj jego właściwości.

$state

Zwykłe let nie jest już reaktywne w trybie run. Opakuj wartość początkową w $state i aktualizuj ją jak każdą zmienną.

$derived

Etykieta $: pełniła dwie funkcje. Obliczenia stają się $derived; Svelte przelicza je, gdy zmienia się count.

$effect

Efekty uboczne z $: przenoszą się do $effect. Uruchamia się on w przeglądarce po aktualizacji DOM, a jego wartość zwracana służy do sprzątania.

$props

Wszystkie propsy przychodzą przez jedną instrukcję destrukturyzacji. Wartości domyślne, zmiany nazw i propsy rest używają zwykłej składni JavaScriptu.

$bindable

Oznacz props przez $bindable, aby rodzic mógł użyć na nim bind:. Kod rodzica pozostaje bez zmian.

Zdarzenia

on:click staje się atrybutem onclick, a własne zdarzenia stają się propsami z callbackami zamiast createEventDispatcher.

Snippety

Snippet children zastępuje domyślny slot, a {@render} go umieszcza. Operator ?. pomija renderowanie, gdy nie przekazano children.

Kod Svelte 4 i jego wersja w Svelte 5

Wybierz runę

Svelte 4

Svelte 5 z runami

Kopiuj Svelte 4

Kopiuj Svelte 5

Przykład {n} z {v}

Zacznij za darmo · Bez karty kredytowej

Powiązane: Poradniki

Produkt

Dla kogo

Funkcje

Zasoby

Firma

Mapa strony