$:
은 멋진 트릭이나, 파생 상태(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-5
svelte/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
의존성 관련 오류입니다.스벨트 봄은 온다.