ไทย

สำรวจ React Server Actions ฟีเจอร์อันทรงพลังสำหรับการจัดการการส่งฟอร์มและการเปลี่ยนแปลงข้อมูลโดยตรงบนเซิร์ฟเวอร์ ลดความซับซ้อนในการพัฒนา React และเพิ่มความปลอดภัย

React Server Actions: ลดความซับซ้อนในการประมวลผลฟอร์มฝั่งเซิร์ฟเวอร์

React Server Actions ซึ่งเปิดตัวใน React 18 และได้รับการปรับปรุงอย่างมากใน Next.js นำเสนอแนวทางที่ปฏิวัติวงการในการจัดการการส่งฟอร์มและการเปลี่ยนแปลงข้อมูลโดยตรงบนเซิร์ฟเวอร์ ฟีเจอร์อันทรงพลังนี้ช่วยลดความซับซ้อนในกระบวนการพัฒนา เพิ่มความปลอดภัย และปรับปรุงประสิทธิภาพเมื่อเทียบกับการดึงข้อมูลและการจัดการข้อมูลฝั่งไคลเอ็นต์แบบเดิม

React Server Actions คืออะไร

Server Actions คือฟังก์ชัน Asynchronous ที่ทำงานบนเซิร์ฟเวอร์และสามารถเรียกใช้ได้โดยตรงจากส่วนประกอบ React ช่วยให้คุณสามารถทำงานฝั่งเซิร์ฟเวอร์ได้ เช่น:

ข้อได้เปรียบหลักของ Server Actions คือช่วยให้คุณสามารถเขียนโค้ดฝั่งเซิร์ฟเวอร์ภายในส่วนประกอบ React ของคุณ โดยไม่จำเป็นต้องมีเส้นทาง API แยกต่างหากและตรรกะการดึงข้อมูลฝั่งไคลเอ็นต์ที่ซับซ้อน การจัดวาง UI และตรรกะฝั่งเซิร์ฟเวอร์ร่วมกันนี้ นำไปสู่ฐานโค้ดที่บำรุงรักษาได้ง่ายและมีประสิทธิภาพมากขึ้น

ประโยชน์ของการใช้ React Server Actions

การใช้ React Server Actions ให้ประโยชน์ที่สำคัญหลายประการ:

การพัฒนาที่ง่ายขึ้น

Server Actions ลดโค้ดสำเร็จรูปโดยอนุญาตให้คุณจัดการการส่งฟอร์มและการเปลี่ยนแปลงข้อมูลโดยตรงภายในส่วนประกอบ React ของคุณ สิ่งนี้ไม่จำเป็นต้องมีปลายทาง API แยกต่างหากและตรรกะการดึงข้อมูลฝั่งไคลเอ็นต์ที่ซับซ้อน ทำให้กระบวนการพัฒนาง่ายขึ้นและทำให้โค้ดของคุณเข้าใจและบำรุงรักษาได้ง่ายขึ้น ลองพิจารณาแบบฟอร์มติดต่ออย่างง่าย หากไม่มี Server Actions คุณจะต้องมีเส้นทาง API แยกต่างหากเพื่อจัดการการส่งฟอร์ม JavaScript ฝั่งไคลเอ็นต์เพื่อส่งข้อมูล และตรรกะการจัดการข้อผิดพลาดทั้งบนไคลเอ็นต์และเซิร์ฟเวอร์ ด้วย Server Actions ทั้งหมดนี้สามารถจัดการได้ภายในส่วนประกอบเอง

ความปลอดภัยที่เพิ่มขึ้น

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

ประสิทธิภาพที่ดีขึ้น

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

การอัปเดตในเชิงบวก

Server Actions ผสานรวมกับ Suspense และ Transitions ของ React ได้อย่างราบรื่น ทำให้สามารถอัปเดตในเชิงบวก การอัปเดตในเชิงบวกช่วยให้คุณสามารถอัปเดต UI ได้ทันที แม้กระทั่งก่อนที่เซิร์ฟเวอร์จะยืนยันการกระทำ สิ่งนี้มอบประสบการณ์การใช้งานที่ตอบสนองและน่าดึงดูดยิ่งขึ้น เนื่องจากผู้ใช้ไม่ต้องรอให้เซิร์ฟเวอร์ตอบสนองก่อนที่จะเห็นผลลัพธ์ของการกระทำของตน ในอีคอมเมิร์ซ การเพิ่มรายการลงในรถเข็นช้อปปิ้งสามารถแสดงได้ทันทีในขณะที่เซิร์ฟเวอร์ยืนยันการเพิ่มในพื้นหลัง

การปรับปรุงแบบก้าวหน้า

Server Actions รองรับการปรับปรุงแบบก้าวหน้า ซึ่งหมายความว่าแอปพลิเคชันของคุณยังคงสามารถทำงานได้แม้ว่า JavaScript จะถูกปิดใช้งานหรือโหลดไม่สำเร็จ เมื่อปิดใช้งาน JavaScript แบบฟอร์มจะส่งเป็นแบบฟอร์ม HTML แบบดั้งเดิม และเซิร์ฟเวอร์จะจัดการการส่งและเปลี่ยนเส้นทางผู้ใช้ไปยังหน้าใหม่ สิ่งนี้ทำให้มั่นใจได้ว่าแอปพลิเคชันของคุณยังคงสามารถเข้าถึงได้สำหรับผู้ใช้ทุกคน โดยไม่คำนึงถึงการกำหนดค่าเบราว์เซอร์หรือสภาวะเครือข่าย นี่เป็นสิ่งสำคัญอย่างยิ่งสำหรับการเข้าถึงและความเหมาะสมกับ SEO

วิธีใช้ React Server Actions

ในการใช้ React Server Actions คุณจะต้องใช้เฟรมเวิร์กที่รองรับ เช่น Next.js นี่คือคำแนะนำทีละขั้นตอน:

1. กำหนด Server Action

สร้างฟังก์ชัน Asynchronous ที่จะทำงานบนเซิร์ฟเวอร์ ฟังก์ชันนี้ควรจัดการตรรกะที่คุณต้องการดำเนินการบนเซิร์ฟเวอร์ เช่น การอัปเดตฐานข้อมูลหรือการเรียก API ทำเครื่องหมายฟังก์ชันด้วย Directive "use server" ที่ด้านบนเพื่อระบุว่าเป็น Server Action Directive นี้จะบอกคอมไพเลอร์ React ให้ปฏิบัติต่อฟังก์ชันเป็นฟังก์ชันฝั่งเซิร์ฟเวอร์ และจัดการการ Serialization และ Deserialization ของข้อมูลระหว่างไคลเอ็นต์และเซิร์ฟเวอร์โดยอัตโนมัติ

// app/actions.js
'use server'

import { revalidatePath } from 'next/cache';
import { saveMessage } from './db';

export async function createMessage(prevState, formData) {
  const message = formData.get('message');

  try {
    await saveMessage(message);
    revalidatePath('/'); // ล้างแคชเส้นทาง
    return { message: 'บันทึกข้อความเรียบร้อยแล้ว!' };
  } catch (e) {
    return { message: 'ไม่สามารถบันทึกข้อความ' };
  }
}

คำอธิบาย:

2. นำเข้าและใช้ Server Action ในส่วนประกอบของคุณ

นำเข้า Server Action ลงในส่วนประกอบ React ของคุณและใช้เป็นพร็อพ action บนองค์ประกอบฟอร์ม สามารถใช้ Hook useFormState เพื่อจัดการสถานะของฟอร์มและแสดงความคิดเห็นให้กับผู้ใช้

// app/page.jsx
'use client';

import { useFormState } from 'react-dom';
import { createMessage } from './actions';

export default function Home() {
  const [state, formAction] = useFormState(createMessage, {message: ''});

  return (
    
{state?.message &&

{state.message}

}
); }

คำอธิบาย:

3. จัดการข้อมูลฟอร์ม

ภายใน Server Action คุณสามารถเข้าถึงข้อมูลฟอร์มได้โดยใช้ API FormData API นี้เป็นวิธีที่สะดวกในการเข้าถึงค่าของฟิลด์ฟอร์ม

'use server'

export async function createMessage(prevState, formData) {
  const message = formData.get('message');

  // ...
}

4. จัดการข้อผิดพลาด

ใช้บล็อก try...catch เพื่อจัดการข้อผิดพลาดที่อาจเกิดขึ้นระหว่างการดำเนินการของ Server Action คืนค่าข้อความแสดงข้อผิดพลาดใน Object สถานะเพื่อแสดงให้ผู้ใช้เห็น

'use server'

export async function createMessage(prevState, formData) {
  const message = formData.get('message');

  try {
    // ...
  } catch (e) {
    return { message: 'ไม่สามารถบันทึกข้อความ' };
  }
}

5. ตรวจสอบข้อมูลใหม่

หลังจากที่ Server Action เปลี่ยนแปลงข้อมูลสำเร็จแล้ว คุณอาจต้องตรวจสอบแคชข้อมูลใหม่เพื่อให้แน่ใจว่า UI สะท้อนถึงการเปลี่ยนแปลงล่าสุด ใช้ฟังก์ชัน revalidatePath หรือ revalidateTag จาก next/cache เพื่อตรวจสอบเส้นทางหรือแท็กเฉพาะใหม่

'use server'

import { revalidatePath } from 'next/cache';

export async function createMessage(prevState, formData) {
  // ...
  revalidatePath('/'); // ล้างแคชเส้นทาง
  // ...
}

การใช้งานขั้นสูง

การเปลี่ยนแปลงข้อมูล

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

การตรวจสอบสิทธิ์และการอนุญาต

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

ฟังก์ชัน Edge

Server Actions สามารถปรับใช้เป็นฟังก์ชัน Edge ซึ่งทำงานบนเครือข่ายเซิร์ฟเวอร์ทั่วโลกที่อยู่ใกล้กับผู้ใช้ของคุณ สิ่งนี้สามารถลดเวลาแฝงและปรับปรุงประสิทธิภาพได้อย่างมาก โดยเฉพาะอย่างยิ่งสำหรับผู้ใช้ในสถานที่ที่กระจายทางภูมิศาสตร์ ฟังก์ชัน Edge เหมาะอย่างยิ่งสำหรับการจัดการ Server Actions ที่ต้องการเวลาแฝงต่ำ เช่น การอัปเดตข้อมูลแบบเรียลไทม์หรือการส่งมอบเนื้อหาส่วนบุคคล Next.js มีการรองรับในตัวสำหรับการปรับใช้ Server Actions เป็นฟังก์ชัน Edge

การสตรีม

Server Actions รองรับการสตรีม ซึ่งช่วยให้คุณสามารถส่งข้อมูลไปยังไคลเอ็นต์เป็น Chunk เมื่อพร้อมใช้งาน สิ่งนี้สามารถปรับปรุงประสิทธิภาพที่รับรู้ได้ของแอปพลิเคชันของคุณ โดยเฉพาะอย่างยิ่งสำหรับ Server Actions ที่ใช้เวลานานในการดำเนินการ การสตรีมมีประโยชน์อย่างยิ่งสำหรับการจัดการชุดข้อมูลขนาดใหญ่หรือการคำนวณที่ซับซ้อน ตัวอย่างเช่น คุณสามารถสตรีมผลการค้นหาไปยังไคลเอ็นต์เมื่อดึงข้อมูลจากฐานข้อมูล มอบประสบการณ์การใช้งานที่ตอบสนองได้ดีขึ้น

แนวทางปฏิบัติที่ดีที่สุด

ต่อไปนี้เป็นแนวทางปฏิบัติที่ดีที่สุดบางส่วนที่ควรปฏิบัติตามเมื่อใช้ React Server Actions:

ตัวอย่างในโลกแห่งความเป็นจริง

ลองพิจารณาตัวอย่างในโลกแห่งความเป็นจริงบางส่วนเกี่ยวกับวิธีที่ React Server Actions สามารถใช้ในแอปพลิเคชันประเภทต่างๆ:

แอปพลิเคชันอีคอมเมิร์ซ

แอปพลิเคชันโซเชียลมีเดีย

ระบบจัดการเนื้อหา (CMS)

ข้อควรพิจารณาเกี่ยวกับการทำให้เป็นสากล

เมื่อพัฒนาแอปพลิเคชันสำหรับผู้ชมทั่วโลก สิ่งสำคัญคือต้องพิจารณาการทำให้เป็นสากล (i18n) และการแปลเป็นภาษาท้องถิ่น (l10n) ต่อไปนี้เป็นข้อควรพิจารณาบางประการสำหรับการใช้ React Server Actions ในแอปพลิเคชันที่ทำให้เป็นสากล:

ตัวอย่างเช่น เมื่อประมวลผลแบบฟอร์มที่ต้องใช้ Input วันที่ Server Action สามารถใช้ API Intl.DateTimeFormat เพื่อแยกวิเคราะห์วันที่ตาม Locale ของผู้ใช้ ทำให้มั่นใจได้ว่าวันที่ถูกตีความอย่างถูกต้องโดยไม่คำนึงถึงการตั้งค่าภูมิภาคของผู้ใช้

บทสรุป

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