Upgrade to Pro — share decks privately, control downloads, hide ads and more …

React島→Svelte島 住民受け入れガイド

React島→Svelte島 住民受け入れガイド

Reactに慣れているエンジニアがより良いSvelteを書くにはどうすればいいのか、を実体験を踏まえて考えます。
Joinする側、受け入れる側双方がどんな考え方でどんな行動をすれば良いのかをお伝えします。

この資料はSvelte Japan Offline Meetup #8での登壇資料です。

Avatar for HIBIKI CUBE

HIBIKI CUBE

July 17, 2026

More Decks by HIBIKI CUBE

Other Decks in Technology

Transcript

  1. ReactにはRuneが無い import { useState } from 'react'; export default function

    Counter() { const [count, setCount] = useState(0); const doubled = count * 2; return ( <button onClick={() => setCount(c => c + 1)}> Count: {count} / Doubled: {doubled} </button> ); }
  2. ReactにはRuneが無い <script lang="ts"> let count = $state(0); const doubled =

    count * 2; </script> <button onclick={() => count++}> Count: {count} / Doubled: {doubled} </button>
  3. ReactにはRuneが無い <script lang="ts"> let count = $state(0); const doubled =

    count * 2; </script> <button onclick={() => count++}> Count: {count} / Doubled: {doubled} </button> リアクティブに 更新されない
  4. ReactにはRuneが無い <script lang="ts"> let count = $state(0); let doubled =

    $state(0); $effect(() => { doubled = count * 2; }); </script> <button onclick={() => count++}> Count: {count} / Doubled: {doubled} </button>
  5. ReactにはRuneが無い <script lang="ts"> let count = $state(0); let doubled =

    $state(0); $effect(() => { doubled = count * 2; }); </script> <button onclick={() => count++}> Count: {count} / Doubled: {doubled} </button> 󰢃
  6. ReactにはRuneが無い <script lang="ts"> let count = $state(0); const doubled =

    $derived(count * 2); </script> <button onclick={() => count++}> Count: {count} / Doubled: {doubled} </button>
  7. ReactにはRuneが無い <script lang="ts"> let count = $state(0); let doubled =

    $state(0); $effect(() => { doubled = count * 2; }); </script> <button onclick={() => count++}> Count: {count} / Doubled: {doubled} </button> <button onclick={() => doubled *= 2}> Double doubled: {doubled} </button>
  8. ReactにはRuneが無い <script lang="ts"> let count = $state(0); let doubled =

    $derived(count * 2); </script> <button onclick={() => count++}> Count: {count} / Doubled: {doubled} </button> <button onclick={() => doubled *= 2}> Double doubled: {doubled} </button>
  9. それはSvelteの仕事だ! import { useState } from 'react'; export default function

    ReactInput() { const [name, setName] = useState(''); return ( <> <input type="text" value={name} onChange={(e) => setName(e.target.value)} /> <p>{name}さんこんにちは!</p> </> ); }
  10. それはSvelteの仕事だ! <script lang="ts"> let name = $state(''); </script> <input type="text"

    value={name} onchange={(e) => name = e.target.value} /> <p>{name}さん、こんにちは!</p>
  11. それはSvelteの仕事だ! <script lang="ts"> let name = $state(''); </script> <input type="text"

    value={name} onchange={(e) => name = e.target.value} /> <p>{name}さん、こんにちは!</p>
  12. End