Data & State — ภาพรวม
React มอบเมนูที่หลากหลายแต่กระจัดกระจาย: useState, useReducer, useContext, useRef, Redux, Zustand, react-query, SWR — แต่ละตัวแก้ปัญหา state คนละส่วน Svelte มีโมเดลเป็นชั้นๆ ที่ครอบคลุมพื้นที่เดียวกันด้วยชิ้นส่วนที่น้อยกว่ามาก:
$state— reactive state ระดับ component (แทนuseState)$derived— ค่าที่คำนวณและอัปเดตอัตโนมัติ (แทนuseMemo)$effect— side effects ที่รันซ้ำเมื่อ dependency เปลี่ยน (แทนuseEffect)- Svelte stores (
writable,readable,derived) — shared state ข้ามคอมโพเนนต์ .svelte.tsmodules — reactive state ระดับ module นำเข้าได้เหมือน JS module ทั่วไป{#await}— async/loading/error state แบบ declarative ใน markup
โมดูลนี้จะพาไปทีละชั้น เริ่มที่นี่เพื่อดูแผนที่ภาพรวม จากนั้นค่อยดำดิ่งสู่บทเรียนเฉพาะเรื่อง
State ระดับ component: useState → $state
หัวข้อที่มีชื่อว่า “State ระดับ component: useState → $state”function Counter() { const [count, setCount] = React.useState(0); return ( <button onClick={() => setCount(c => c + 1)}> Count: {count} </button> );}<script> let count = $state(0);</script>
<button onclick={() => count++}> Count: {count}</button>ความต่างสำคัญ: ตัวแปร $state คือตัวแปรธรรมดาที่แก้ไขได้โดยตรง ไม่มี setter ไม่ต้องใช้ functional update — แค่ assign ค่าตรงๆ compiler ของ Svelte ติดตามการอ่านและเขียนที่ call site เอง