Runes do Svelte 5, lado a lado com o Svelte 4

Runes do Svelte 5

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

Cada rune do Svelte 5 com o código Svelte 4 que ela substitui: $state, $derived, $effect, $props e $bindable, além da nova sintaxe de eventos e snippets. Exemplos prontos para copiar.

Runes são as palavras-chave do compilador que o Svelte 5 usa para reatividade. $state declara uma variável reativa, $derived calcula um valor a partir de outro estado, $effect roda código depois que a página atualiza, $props lê as props do componente e $bindable marca uma prop à qual o componente pai pode fazer bind. Elas substituem o let reativo, o label $: e o export let do Svelte 4.

A sintaxe do Svelte 4 e a rune que a substitui

Escolha uma rune para ver um componente Svelte 4 e a versão reescrita em Svelte 5. Cada par se comporta igual, então você pode migrar um arquivo por vez e conferir o resultado no caminho.

Perguntas frequentes

Preciso reescrever o app inteiro para o Svelte 5?

Não. O Svelte 5 ainda aceita a sintaxe do Svelte 4, e componentes no estilo antigo e com runes podem conviver no mesmo app e usar uns aos outros, então você pode converter os arquivos um por um.

Por que o meu $effect não roda de novo?

O Svelte só rastreia o estado lido de forma síncrona dentro do efeito. Um valor lido depois de um await ou dentro de um callback de setTimeout não é uma dependência, então alterá-lo não faz nada.

Posso alterar um valor $derived?

Desde o Svelte 5.25 você pode reatribuir temporariamente um valor derivado, o que ajuda em atualizações otimistas, a menos que ele seja declarado com const. Ele é recalculado quando as dependências mudam. Versões anteriores tratam os derivados como somente leitura.

O que substituiu o createEventDispatcher?

Props de callback. O filho recebe uma função como onsave por meio de $props e a chama, e o pai passa o handler como qualquer outro atributo.

Como dou um id único a um campo de formulário?

Chame $props.id(), adicionado no Svelte 5.20. Ele retorna um id único para a instância do componente que é o mesmo no servidor e no navegador, então é seguro para for e aria-labelledby.

O $state é profundo por padrão

O $derived precisa continuar puro

Timing e limpeza do $effect

Compartilhando estado entre componentes

Uma store reativa em um arquivo .svelte.js

Uma variável $state reatribuída não pode ser exportada diretamente, então exporte um objeto e altere as propriedades dele.

$state

Um let simples não é mais reativo no modo runes. Envolva o valor inicial em $state e atualize-o como qualquer variável.

$derived

O label $: fazia dois trabalhos. Cálculos viram $derived; o Svelte os recalcula quando count muda.

$effect

Efeitos colaterais do $: passam para o $effect. Ele roda no navegador depois que o DOM atualiza, e o valor de retorno é a limpeza.

$props

Todas as props chegam por uma única desestruturação. Valores padrão, renomeações e rest props usam a sintaxe normal do JavaScript.

$bindable

Marque uma prop com $bindable para que o pai possa usar bind: nela. O código do pai continua igual.

Eventos

on:click vira o atributo onclick, e eventos personalizados viram props de callback em vez de createEventDispatcher.

Snippets

O snippet children substitui o slot padrão, e {@render} o posiciona. O ?. pula a renderização quando nenhum children foi passado.

Código Svelte 4 e a versão reescrita em Svelte 5

Escolha uma rune

Svelte 4

Svelte 5 com runes

Copiar Svelte 4

Copiar Svelte 5

Exemplo {n} de {v}

Comece grátis · Sem cartão de crédito

Relacionados: Guias

Produto

Para quem é

Recursos

Recursos

Empresa

Mapa do site