0Pricing
React Academy · บทเรียน

การดำเนินการของแบบฟอร์ม: แทนที่เส้นทาง API สำหรับการเปลี่ยนแปลงข้อมูล

เชื่อมการดำเนินการฝั่งเซิร์ฟเวอร์เข้ากับการดำเนินการของแบบฟอร์ม HTML โดยตรง เพื่อเปลี่ยนแปลงข้อมูลในแบบฟอร์มโดยไม่ต้องเขียนโค้ดประกอบ และตรวจสอบข้อมูลใหม่ทั้งหมด

การดำเนินการของแบบฟอร์ม: แทนที่เส้นทาง API สำหรับการเปลี่ยนแปลงข้อมูล เป็นบทเรียน React Academy ฟรีบน CoddyKit นี่คือบทเรียนที่ 2 จากทั้งหมด 4 บทเรียน คุณสามารถอ่านบทเรียนทั้งหมดด้านล่างฟรี — จากนั้นลองปฏิบัติด้วยตัวคุณเองในเบราว์เซอร์พร้อมตัวแก้ไขโค้ดในตัวและติวเตอร์ AI ตลอด 24/7 บทเรียนนี้เป็นส่วนหนึ่งของเส้นทางการเรียน React Academy และความก้าวหน้าของคุณจะซิงค์ข้ามเว็บและแอป CoddyKit คอร์ส React Academy มีบทเรียนทั้งหมด 4 บทเรียน

รูปแบบดั้งเดิม

ในแอปพลิเคชัน Next.js แบบดั้งเดิม การส่งแบบฟอร์มต้องใช้คอมโพเนนต์ฝั่งไคลเอนต์ที่มีตัวจัดการ onSubmit ซึ่งเรียกใช้ fetch() เพื่อส่งข้อมูลด้วย POST ไปยังเส้นทางส่วนติดต่อโปรแกรมประยุกต์ รูปแบบนี้ใช้งานได้ แต่ต้องเขียนและดูแลทั้งตรรกะการดึงข้อมูลฝั่งไคลเอนต์และตัวจัดการเส้นทางฝั่งเซิร์ฟเวอร์แยกจากกัน

แอ็กชันฝั่งเซิร์ฟเวอร์ทำให้แบบฟอร์มเรียบง่ายขึ้น

เมื่อใช้แอ็กชันฝั่งเซิร์ฟเวอร์ คุณจะแทนที่การเรียกใช้การดึงข้อมูลและเส้นทางส่วนติดต่อโปรแกรมประยุกต์ด้วยฟังก์ชันเดียว องค์ประกอบแบบฟอร์มจะรับแอ็กชันฝั่งเซิร์ฟเวอร์เป็นพร็อพ action: <form action={serverAction}> รีแอ็กต์จะดักจับการส่งแบบฟอร์มและเรียกใช้แอ็กชันพร้อมข้อมูลแบบฟอร์มโดยอัตโนมัติ

การเข้าถึงฟิลด์แบบฟอร์มด้วย FormData

แอ็กชันฝั่งเซิร์ฟเวอร์จะได้รับอ็อบเจ็กต์ FormData เป็นอาร์กิวเมนต์โดยอัตโนมัติเมื่อถูกเรียกใช้จากแบบฟอร์ม คุณเข้าถึงฟิลด์แต่ละรายการได้ด้วย formData.get('email') ซึ่งส่งคืนค่าเป็นสตริง เมธอดมาตรฐานทั้งหมดของ FormData พร้อมใช้งาน รวมถึง getAll() สำหรับฟิลด์ที่เลือกได้หลายรายการ

การส่งคืนผลลัพธ์จากแอ็กชัน

แอ็กชันฝั่งเซิร์ฟเวอร์สามารถส่งคืนค่าที่ทำให้เป็นอนุกรมได้ เพื่อให้ไคลเอนต์นำไปใช้ การส่งคืนอ็อบเจ็กต์ข้อผิดพลาดอย่าง { error: 'Email already exists' } หรือธงแสดงความสำเร็จอย่าง { success: true } ช่วยให้ไคลเอนต์อัปเดตส่วนติดต่อผู้ใช้ได้ตามความเหมาะสมโดยไม่ต้องโหลดทั้งหน้าใหม่

คอมโพเนนต์หน้าที่ยังคงเรียบง่าย

เนื่องจากแอ็กชันของแบบฟอร์มเป็นแอ็กชันฝั่งเซิร์ฟเวอร์ คอมโพเนนต์หน้าที่มีแบบฟอร์มจึงไม่จำเป็นต้องเป็นคอมโพเนนต์ฝั่งไคลเอนต์ เซิร์ฟเวอร์จะแสดงผลแบบฟอร์มเป็น HTML แบบคงที่ และเฉพาะส่วนที่โต้ตอบได้ เช่น การแสดงข้อผิดพลาดเท่านั้นที่ต้องใช้ JavaScript ฝั่งไคลเอนต์ วิธีนี้ช่วยลดขนาดชุดโปรแกรมฝั่งไคลเอนต์ได้อย่างมาก

การเพิ่มประสิทธิภาพแบบก้าวหน้าที่มีมาให้ในตัว

แบบฟอร์มที่มี action={serverAction} ทำงานได้แม้ไม่ได้เปิดใช้ JavaScript เบราว์เซอร์จะส่ง POST แบบฟอร์ม HTML มาตรฐาน เซิร์ฟเวอร์จะเรียกใช้แอ็กชัน และเซิร์ฟเวอร์จะส่งหน้าที่อัปเดตแล้วกลับมา การเพิ่มประสิทธิภาพแบบก้าวหน้าอย่างแท้จริงนี้ทำให้แบบฟอร์มยังทำงานได้อย่างเหมาะสมในทุกสภาพแวดล้อม

การตรวจสอบข้อมูลใหม่หลังการเปลี่ยนแปลง

หลังจากแอ็กชันฝั่งเซิร์ฟเวอร์เปลี่ยนแปลงข้อมูล ข้อมูลหน้าที่แคชไว้จะต้องได้รับการปรับปรุง การเรียกใช้ revalidatePath('/dashboard') ภายในแอ็กชันจะทำให้แคชของ Next.js สำหรับเส้นทางนั้นไม่ถูกต้อง ส่งผลให้คำขอถัดไปดึงข้อมูลล่าสุด วิธีนี้เป็นแนวทางมาตรฐานในการทำให้หน้าที่แสดงผลบนเซิร์ฟเวอร์เป็นปัจจุบันหลังการเปลี่ยนแปลงข้อมูล

การทำให้แคชไม่ถูกต้องแบบละเอียด

revalidateTag('user-data') ให้การทำให้แคชไม่ถูกต้องที่ละเอียดกว่า revalidatePath คุณติดป้ายกำกับการเรียกดึงข้อมูลด้วย next: { tags: ['user-data'] } แล้วทำให้ข้อมูลที่มีป้ายกำกับทั้งหมดไม่ถูกต้องพร้อมกันจากภายในแอ็กชันฝั่งเซิร์ฟเวอร์ได้ โดยไม่ขึ้นกับว่าเส้นทางใดแสดงข้อมูลนั้น

การนำทางไปที่อื่นหลังแอ็กชัน

แอ็กชันฝั่งเซิร์ฟเวอร์สามารถนำผู้ใช้ไปยังหน้าใหม่หลังการเปลี่ยนแปลงข้อมูลสำเร็จได้ โดยเรียกใช้ redirect('/success') จากโมดูล next/navigation การนำทางนี้จัดการบนเซิร์ฟเวอร์ ซึ่งหมายความว่าเบราว์เซอร์จะได้รับการตอบกลับสำหรับการนำทางที่ถูกต้อง แทนการนำทางโดยไคลเอนต์

การเปลี่ยนแปลงข้อมูลที่ไม่ใช่แบบฟอร์มด้วย startTransition

แอ็กชันฝั่งเซิร์ฟเวอร์ไม่ได้จำกัดอยู่แค่การส่งแบบฟอร์ม สำหรับการคลิกปุ่มและตัวกระตุ้นอื่นที่ไม่ใช่แบบฟอร์ม ให้ครอบการเรียกใช้แอ็กชันด้วย startTransition(() => action(arg)) การทำเช่นนี้จะระบุว่าการนำทางเป็นการเปลี่ยนผ่าน ทำให้รีแอ็กต์คงส่วนติดต่อผู้ใช้ปัจจุบันไว้ได้ขณะที่แอ็กชันทำงานบนเซิร์ฟเวอร์

การตรวจสอบความถูกต้องภายในแอ็กชัน

แอ็กชันฝั่งเซิร์ฟเวอร์เป็นตำแหน่งที่เหมาะสมสำหรับการตรวจสอบความถูกต้องฝั่งเซิร์ฟเวอร์ ให้ตรวจสอบฟิลด์ของ FormData ส่งคืนข้อผิดพลาดจากการตรวจสอบหากไม่ผ่าน และดำเนินการเปลี่ยนแปลงข้อมูลต่อเมื่อทุกฟิลด์ถูกต้อง ไลบรารีอย่างซอดทำงานร่วมกันได้ดีในกรณีนี้ โดยแปลง FormData ให้ตรงกับแบบแผนที่มีชนิดข้อมูล แล้วส่งคืนแผนผังข้อผิดพลาดเมื่อไม่ผ่านการตรวจสอบ

คำถามเกี่ยวกับ FormData

เมื่อถูกเรียกใช้จากการส่งแบบฟอร์ม แอ็กชันฝั่งเซิร์ฟเวอร์จะได้รับอะไรเป็นอาร์กิวเมนต์

สรุปบทเรียน

แอ็กชันฝั่งเซิร์ฟเวอร์เข้ามาแทนที่รูปแบบการดึงข้อมูลร่วมกับเส้นทางส่วนติดต่อโปรแกรมประยุกต์สำหรับการเปลี่ยนแปลงข้อมูลจากแบบฟอร์ม พร็อพ action ของแบบฟอร์มรับแอ็กชันฝั่งเซิร์ฟเวอร์ได้โดยตรง โดยแอ็กชันจะได้รับอ็อบเจ็กต์ FormData แอ็กชันส่งคืนผลลัพธ์ที่ทำให้เป็นอนุกรมได้สำหรับการอัปเดตส่วนติดต่อผู้ใช้ฝั่งไคลเอนต์ รองรับ revalidatePath และ revalidateTag สำหรับการทำให้แคชไม่ถูกต้อง และทำงานแบบก้าวหน้าได้โดยไม่ต้องใช้ JavaScript

คำถามที่พบบ่อย

บทเรียน “การดำเนินการของแบบฟอร์ม: แทนที่เส้นทาง API สำหรับการเปลี่ยนแปลงข้อมูล” ฟรีหรือไม่

ใช่ — ข้อความเต็มของ “การดำเนินการของแบบฟอร์ม: แทนที่เส้นทาง API สำหรับการเปลี่ยนแปลงข้อมูล” ฟรีให้อ่านที่นี่บนเว็บ เพื่อปฏิบัติแบบโต้ตอบ (ตัวแก้ไขโค้ดในตัวและติวเตอร์ AI ตลอด 24/7) และปลดล็อคส่วนที่เหลือของคอร์ส React Academy ให้อัปเกรดเป็น CoddyKit PRO คอร์ส React Academy มีบทเรียนทั้งหมด 4 บทเรียน

คุณจะเรียนรู้อะไรในบทเรียน “การดำเนินการของแบบฟอร์ม: แทนที่เส้นทาง API สำหรับการเปลี่ยนแปลงข้อมูล”

เชื่อมการดำเนินการฝั่งเซิร์ฟเวอร์เข้ากับการดำเนินการของแบบฟอร์ม HTML โดยตรง เพื่อเปลี่ยนแปลงข้อมูลในแบบฟอร์มโดยไม่ต้องเขียนโค้ดประกอบ และตรวจสอบข้อมูลใหม่ทั้งหมด คุณปฏิบัติ React Academy ด้วยโค้ดที่ใช้งานได้จริงที่คุณเรียกใช้โดยตรงในเบราว์เซอร์ และติวเตอร์ AI ตลอด 24/7 ตอบคำถามของคุณขณะที่คุณไปผ่านบทเรียน

คุณต้องมีประสบการณ์ก่อนที่จะเริ่มเรียน React Academy หรือไม่

ไม่จำเป็นต้องมีประสบการณ์มาก่อน React Academy บน CoddyKit ออกแบบมาสำหรับผู้เริ่มต้นไปจนถึงผู้เรียนขั้นสูง คุณสามารถเริ่มต้นที่นี่หรือเริ่มจากตัวแรกและเรียนด้วยความเร็วของคุณเอง นี่คือบทเรียนที่ 2 จากทั้งหมด 4 บทเรียน

บทเรียน “การดำเนินการของแบบฟอร์ม: แทนที่เส้นทาง API สำหรับการเปลี่ยนแปลงข้อมูล” ใช้เวลานานแค่ไหน

บทเรียน CoddyKit ส่วนใหญ่ใช้เวลาประมาณ 5–10 นาที แต่ละบทเรียนจึงสั้นและเป็นแบบโต้ตอบ คุณสามารถก้าวหน้าอย่างต่อเนื่องและกลับมาเรียนต่อจากตรงที่เพิ่งหยุดบนเว็บและแอปได้เลย

ฉันเขียนและรันโค้ดในบทเรียน React Academy นี้ได้ไหม

ได้ บทเรียน React Academy ทุกบทมีตัวแก้ไขโค้ดในตัว คุณจึงเขียนและรันโค้ดจริงได้เลยในเบราว์เซอร์ และได้รับข้อเสนอแนะจาก AI ในทันที — ไม่ต้องติดตั้งในเครื่องของคุณ

บทเรียนทั้งหมดในหลักสูตรนี้

  1. การดำเนินการฝั่งเซิร์ฟเวอร์ในรีแอ็กต์ 19 และ Next.js
  2. การดำเนินการของแบบฟอร์ม: แทนที่เส้นทาง API สำหรับการเปลี่ยนแปลงข้อมูล
  3. useActionState และ useFormStatus
  4. การปรับปรุงแบบค่อยเป็นค่อยไปด้วยการดำเนินการฝั่งเซิร์ฟเวอร์
← กลับไปที่ React Academy