React Actions และ useActionState
กำหนดแอ็กชันฝั่งเซิร์ฟเวอร์และฝั่งไคลเอ็นต์ จัดการการส่งฟอร์ม และติดตามสถานะกำลังดำเนินการ
React Actions และ useActionState เป็นบทเรียน React Academy ฟรีบน CoddyKit นี่คือบทเรียนที่ 3 จากทั้งหมด 4 บทเรียน คุณสามารถอ่านบทเรียนทั้งหมดด้านล่างฟรี — จากนั้นลองปฏิบัติด้วยตัวคุณเองในเบราว์เซอร์พร้อมตัวแก้ไขโค้ดในตัวและติวเตอร์ AI ตลอด 24/7 บทเรียนนี้เป็นส่วนหนึ่งของเส้นทางการเรียน React Academy และความก้าวหน้าของคุณจะซิงค์ข้ามเว็บและแอป CoddyKit คอร์ส React Academy มีบทเรียนทั้งหมด 4 บทเรียน
ยินดีต้อนรับ
React Actions คืออะไร
แอ็กชันฝั่งเซิร์ฟเวอร์ใน Next.js
'use server';
export async function createPost(formData) {
const title = formData.get('title');
await db.insert(posts).values({ title });
revalidatePath('/posts');
}การใช้แอ็กชันกับแบบฟอร์ม
import { createPost } from './actions';
export default function NewPostForm() {
return (
<form action={createPost}>
<input name="title" />
<button type="submit">Create</button>
</form>
);
}useActionState
'use client';
import { useActionState } from 'react';
import { createPost } from './actions';
function NewPostForm() {
const [state, action, isPending] = useActionState(createPost, null);
return (
<form action={action}>
{state?.error && <p>{state.error}</p>}
<input name="title" />
<button disabled={isPending}>Create</button>
</form>
);
}แอ็กชันที่ส่งคืนสถานะ
'use server';
export async function createPost(prevState, formData) {
const title = formData.get('title')?.toString();
if (!title) return { error: 'Title is required' };
await db.insert(posts).values({ title });
return { success: true };
}isPending สำหรับปิดใช้งานปุ่มส่ง
<button type="submit" disabled={isPending}>
{isPending ? 'Saving...' : 'Save'}
</button>แอ็กชันฝั่งไคลเอนต์
async function clientAction(prevState, formData) {
const res = await fetch('/api/post', {
method: 'POST', body: formData,
});
if (!res.ok) return { error: 'Failed' };
return { success: true };
}useFormStatus สำหรับคอมโพเนนต์ลูก
'use client';
import { useFormStatus } from 'react-dom';
function SubmitButton() {
const { pending } = useFormStatus();
return <button disabled={pending}>Submit</button>;
}การปรับปรุงการทำงานแบบค่อยเป็นค่อยไป
ตรวจสอบความเข้าใจอย่างรวดเร็ว
สรุปทบทวน
ถัดไป
คำถามที่พบบ่อย
บทเรียน “React Actions และ useActionState” ฟรีหรือไม่
ใช่ — ข้อความเต็มของ “React Actions และ useActionState” ฟรีให้อ่านที่นี่บนเว็บ เพื่อปฏิบัติแบบโต้ตอบ (ตัวแก้ไขโค้ดในตัวและติวเตอร์ AI ตลอด 24/7) และปลดล็อคส่วนที่เหลือของคอร์ส React Academy ให้อัปเกรดเป็น CoddyKit PRO คอร์ส React Academy มีบทเรียนทั้งหมด 4 บทเรียน
คุณจะเรียนรู้อะไรในบทเรียน “React Actions และ useActionState”
กำหนดแอ็กชันฝั่งเซิร์ฟเวอร์และฝั่งไคลเอ็นต์ จัดการการส่งฟอร์ม และติดตามสถานะกำลังดำเนินการ คุณปฏิบัติ React Academy ด้วยโค้ดที่ใช้งานได้จริงที่คุณเรียกใช้โดยตรงในเบราว์เซอร์ และติวเตอร์ AI ตลอด 24/7 ตอบคำถามของคุณขณะที่คุณไปผ่านบทเรียน
คุณต้องมีประสบการณ์ก่อนที่จะเริ่มเรียน React Academy หรือไม่
ไม่จำเป็นต้องมีประสบการณ์มาก่อน React Academy บน CoddyKit ออกแบบมาสำหรับผู้เริ่มต้นไปจนถึงผู้เรียนขั้นสูง คุณสามารถเริ่มต้นที่นี่หรือเริ่มจากตัวแรกและเรียนด้วยความเร็วของคุณเอง นี่คือบทเรียนที่ 3 จากทั้งหมด 4 บทเรียน
บทเรียน “React Actions และ useActionState” ใช้เวลานานแค่ไหน
บทเรียน CoddyKit ส่วนใหญ่ใช้เวลาประมาณ 5–10 นาที แต่ละบทเรียนจึงสั้นและเป็นแบบโต้ตอบ คุณสามารถก้าวหน้าอย่างต่อเนื่องและกลับมาเรียนต่อจากตรงที่เพิ่งหยุดบนเว็บและแอปได้เลย
ฉันเขียนและรันโค้ดในบทเรียน React Academy นี้ได้ไหม
ได้ บทเรียน React Academy ทุกบทมีตัวแก้ไขโค้ดในตัว คุณจึงเขียนและรันโค้ดจริงได้เลยในเบราว์เซอร์ และได้รับข้อเสนอแนะจาก AI ในทันที — ไม่ต้องติดตั้งในเครื่องของคุณ
บทเรียนทั้งหมดในหลักสูตรนี้
- ทำความเข้าใจ React Server Components
- ฮุก use() สำหรับทรัพยากรแบบอะซิงก์
- React Actions และ useActionState
- useOptimistic สำหรับการตอบสนองทันที