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

การส่งพร็อพส์ต่อหลายชั้น: เมื่อใดจึงเป็นปัญหาและเมื่อใดจึงเหมาะสม

ระบุสายการส่งพร็อพส์ต่อที่ลึกหลายชั้น และแยกความยุ่งยากที่ไม่จำเป็นออกจากความซับซ้อนจริง

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

ยินดีต้อนรับ

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

การส่งพร็อพผ่านลำดับชั้นคืออะไร

การส่งพร็อพผ่านลำดับชั้นเกิดขึ้นเมื่อคุณส่งพร็อพผ่านคอมโพเนนต์ตัวกลางที่ไม่ได้ใช้งานพร็อพนั้นเอง แต่มีเพียงคอมโพเนนต์ลูกเท่านั้นที่ต้องใช้ พร็อพจึงต้องถูกประกาศรับและส่งต่อผ่านแต่ละชั้นกลาง
// Middle component: receives 'user' only to pass it down
function Layout({ user }) {
  return <Sidebar user={user} />;
}
// Sidebar: receives 'user' only to pass it down
function Sidebar({ user }) {
  return <UserAvatar user={user} />;
}
// UserAvatar: actually uses 'user'
function UserAvatar({ user }) {
  return <img src={user.avatarUrl} />;
}

เมื่อการส่งพร็อพผ่านลำดับชั้นเป็นเรื่องเหมาะสม

การส่งพร็อพผ่าน 1–2 ระดับมักเป็นเรื่องที่เหมาะสมอย่างยิ่งและเป็นวิธีแก้ปัญหาที่เรียบง่ายที่สุด ต้นทุนของการเพิ่มบริบทหรือไลบรารีจัดการสถานะสูงกว่าต้นทุนของการเพิ่มพร็อพอีกหนึ่งตัวเมื่อมีความลึกเพียงเล็กน้อย

สัญญาณว่าการส่งพร็อพกลายเป็นปัญหา

การส่งพร็อพเป็นปัญหาเมื่อ: (1) พร็อพถูกส่งผ่านคอมโพเนนต์ 4 ระดับขึ้นไปที่ไม่ได้ใช้พร็อพนั้น (2) การเปลี่ยนชื่อพร็อพทำให้ต้องแก้ไขหลายไฟล์ (3) ยากที่จะบอกได้ว่าคอมโพเนนต์ใดเป็นผู้ใช้ข้อมูลจริง

การปรับโครงสร้างด้วยการประกอบคอมโพเนนต์

ก่อนเลือกใช้บริบท ให้ลองใช้ **การประกอบคอมโพเนนต์** ก่อน ส่งคอมโพเนนต์ผู้ใช้ที่เรนเดอร์เสร็จแล้วเป็นพร็อพ (หรือเป็น children) แทนข้อมูลดิบ คอมโพเนนต์ตัวกลางจึงไม่จำเป็นต้องรู้จักข้อมูลนั้นเลย
// Instead of drilling 'user' through Layout → Sidebar → UserAvatar,
// render UserAvatar at the top level and pass it as a slot:
function App() {
  return <Layout sidebar={<UserAvatar user={user} />} />;
}

การประกอบคอมโพเนนต์ช่วยลดการเชื่อมโยง

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

เมื่อใดควรใช้บริบท

ใช้บริบทเมื่อ: (1) การประกอบจะทำให้ต้องส่ง JSX ที่ซับซ้อนผ่านหลายชั้น (2) คอมโพเนนต์ที่ไม่เกี่ยวข้องกันจำนวนมากทั่วทั้งต้นไม้ต้องใช้ข้อมูลเดียวกัน เช่น ผู้ใช้ปัจจุบัน ธีม และภาษาท้องถิ่น

เมื่อใดควรใช้ไลบรารีจัดการสถานะ

ใช้ Zustand, Redux หรือไลบรารีที่คล้ายกันเมื่อสถานะมีความซับซ้อน มีการอัปเดตบ่อย ต้องใช้เครื่องมือสำหรับนักพัฒนา หรือจำเป็นต้องใช้ร่วมกันระหว่างต้นไม้คอมโพเนนต์ที่แยกจากกันโดยสิ้นเชิง

การไหลของข้อมูลย้อนกลับ

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

ลำดับการตัดสินใจ

ถามตัวเองว่า: มีกี่ระดับ? 1–2 ระดับ: ส่งพร็อพต่อไปได้เลย 3 ระดับขึ้นไป: ลองใช้การประกอบก่อน หากยังยุ่งยาก: ใช้บริบท หากตรรกะการอัปเดตซับซ้อนหรืออยู่ข้ามต้นไม้: ใช้ไลบรารีจัดการสถานะ

ตรวจสอบความเข้าใจอย่างรวดเร็ว

คุณควรลองใช้วิธีแก้ปัญหาใดก่อนเลือกใช้บริบทเพื่อแก้ปัญหาการส่งพร็อพผ่านลำดับชั้น

สรุปทบทวน

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

ถัดไป

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

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

บทเรียน “การส่งพร็อพส์ต่อหลายชั้น: เมื่อใดจึงเป็นปัญหาและเมื่อใดจึงเหมาะสม” ฟรีหรือไม่

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

คุณจะเรียนรู้อะไรในบทเรียน “การส่งพร็อพส์ต่อหลายชั้น: เมื่อใดจึงเป็นปัญหาและเมื่อใดจึงเหมาะสม”

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

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

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

บทเรียน “การส่งพร็อพส์ต่อหลายชั้น: เมื่อใดจึงเป็นปัญหาและเมื่อใดจึงเหมาะสม” ใช้เวลานานแค่ไหน

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

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

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

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

  1. ยกสถานะขึ้น: หลักการและตัวอย่าง
  2. การส่งพร็อพส์ต่อหลายชั้น: เมื่อใดจึงเป็นปัญหาและเมื่อใดจึงเหมาะสม
  3. รูปแบบการสื่อสารระหว่างคอมโพเนนต์พี่น้อง
  4. การเลือกตำแหน่งจัดเก็บสถานะที่เหมาะสม
← กลับไปที่ React Academy