$: 은 멋진 트릭이나, 파생 상태(derived state)와 부가 효과(Side effect)를 같이 취급함let count = $state(0);.svelte.js, svelte.ts, .svelte 파일 사용 가능)slot 메커니즘은 이제 {#snippet} 으로 대체됨.let: 과 <svelte:fragment>도 제거.npx sv migrate svelte-5 로 바로 업데이트 가능npx sv migrate svelte-5svelte/legacy 에 있는 함수를 사용하는 식으로 변환되는 경우도 있습니다. (이펙트 및 이벤트 관련)createEventDispatcher, beforeUpdate/afterUpdate 은 자동 변황 되지 않습니다.let → $state<script>
let count = $state(0);
</script>
$: → $derived<script>
let count = $state(0);
const double = $derived(count * 2);
</script>
$: → $effect()<script>
let count = $state(0);
$effect(() => {
if (count > 5) {
alert('Count is too high!');
}
})
</script>
export let → $props<script>
let { optional = 'unset', required } = $props();
</script>
:을 지우세요.<button onclick={() => count++}>
clicks: {count}
</button>
<button {onclick}>
clicks: {count}
</button>
<Pump
inflate={(power) => {
// blahblah
}}
/>
<!-- Pump.svelte -->
<script>
let { inflate, deflate } = $props();
</script>
<button onclick={() => inflate(power)}>
inflate
</button>
on:click 을 넣는 대신에, 콜백 프롭을 받게 변경되었습니다.<script>
let props = $props();
</script>
<button {...props}>
click me
</button>
capture , passive, nonpassive 세 모디파이어가 존재합니다.<button
onclick={(e) => {
one(e);
two(e);
}}
>
...
</button>
Snippet: Slot을 대체하기 위한 기능
기본 컨텐트: <slot /> → {@render children?.()}
<script>
let { children } = $props();
</script>
{@render children?.()}
{@render ...}<script>
let { header, main } = $props();
</script>
<header>
{@render header()}
</header>
<main>
{@render main()}
</main>
let: → 스니펫으로 처리<script>
import List from './List.svelte';
</script>
<List items={['one', 'two', 'three']}>
{#snippet item(text)}
<span>{text}</span>
{/snippet}
{#snippet empty()}
<span>No items yet</span>
{/snippet}
</List>
<script>
let { items, item, empty } = $props();
</script>
{#if items.length}
<ul>
{#each items as entry}
<li>
<slot item={entry} />
{@render item(entry)}
</li>
{/each}
</ul>
{:else}
<slot name="empty" />
{@render empty?.()}
{/if}
bind:this 도 이제 클래스를 반환하지 않아요.App.render() 대신 render(App, ...) 형식입니다.Component 타입이 도입되었습니다.:is() 와 :where() 은 이제 스코프로 적용됩니다.npx sv create 로 인터액티브하게 프로젝트를 구성할 수 있습니다.npx sv add 로 기존 프로젝트에 애드온을 추가할 수 있습니다.svelte/internal 의존성 관련 오류입니다.스벨트 봄은 온다.