ข้ามไปยังเนื้อหา

Forms

นักพัฒนา React ใช้ controlled components โดยผูก value กับ state และ onChange สำหรับ update หรือใช้ react-hook-form เพื่อลด boilerplate Svelte ใช้ bind:value แทนทั้ง value= และ onChange= ด้วย directive เดียว — Svelte sync ค่า state กับ input ให้สองทางโดยอัตโนมัติ สำหรับการส่ง form แบบ full-page SvelteKit form actions จัดการ POST server-side เหมือน Remix action ไม่ต้องเขียน API route แยก

React
function LoginForm() {
const [email, setEmail] = React.useState('');
const [password, setPassword] = React.useState('');
function handleSubmit(e) {
e.preventDefault();
console.log({ email, password });
}
return (
<form onSubmit={handleSubmit}>
<input
type="email"
value={email}
onChange={e => setEmail(e.target.value)}
placeholder="Email"
/>
<input
type="password"
value={password}
onChange={e => setPassword(e.target.value)}
placeholder="Password"
/>
<button type="submit">Log in</button>
</form>
);
}
Svelte
<script>
let email = $state('');
let password = $state('');
function handleSubmit(e) {
e.preventDefault();
console.log({ email, password });
}
</script>
<form onsubmit={handleSubmit}>
<input type="email" bind:value={email} placeholder="Email" />
<input type="password" bind:value={password} placeholder="Password" />
<button type="submit">Log in</button>
</form>
React
// pages/login.tsx (Next.js — API route แยก)
// pages/api/login.ts
export default function handler(req, res) {
const { email, password } = req.body;
// ... authenticate
res.json({ ok: true });
}
Svelte
// +page.server.ts (SvelteKit)
export const actions = {
default: async ({ request }) => {
const data = await request.formData();
const email = data.get('email');
const password = data.get('password');
// ... authenticate
return { success: true };
}
};
<!-- +page.svelte -->
<form method="POST">
<input type="email" name="email" />
<input type="password" name="password" />
<button type="submit">Log in</button>
</form>
directive ใดของ Svelte ที่แทน value + onChange pattern ของ React ได้?
คุณ bind checkbox ใน Svelte อย่างไร?
SvelteKit form actions ต่างจาก React onSubmit handler อย่างไร?