Executando verificação de segurança...
1

Sim, por isso que eu disse que o svelte

separa estado local que o componente possui criado com a palavra chave let de estado compartilhado/combinável criado usando stores

Só que assim como no React os componentes não conseguem reagir a mudanças numa store, apenas a mudanças em estados locais
Então para fazer um componente reagir a mudanças em uma store é necessário criar um estado local e sincronizar esse estado com a store usando o método .subscribe (por isso o contrato de store exige esse método) para que então o componente reaja ao estado local
Basicamente quando você escreve isso:

<script lang="ts">
    import {writable} from 'svelte/store'
    
    const count = writable(0)
</script>

<button on:click={() => {$count++}}>Count is: {$count}</button>

O compilador transforma nisso:

<script lang="ts">
    import {writable} from 'svelte/store'
    import {onDestroy} from 'svelte'
    
    const count = writable(0)
    let $count
    
    const unsubscribe = count.subscribe((value) => {
        $count = value
    })
    
    onDestroy(() => {
        unsubscribe()
    })
</script>

<button on:click={() => {count.update((value) => value + 1)}}>Count is: {$count}</button>

No fim para reagir a estados externos o svelte precisa fazer algo parecido com o hook useExternalAsyncStore do react (só que 1000x mais poderoso e versátil)
A diferença dos signals no Solid é que os componentes conseguem reagir diretamente aos estados compartilhaveis/combináveis que são os signals, sem precisar (e sem poder) usar estado local no componente

Carregando publicação patrocinada...