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

รูปแบบการสื่อสารระหว่างคอมโพเนนต์พี่น้อง

ประสานงานคอมโพเนนต์พี่น้องสองตัวผ่านสถานะของคอมโพเนนต์แม่ที่ใช้ร่วมกันและพร็อพส์ callback

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

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

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

คอมโพเนนต์พี่น้องไม่สามารถสื่อสารกันโดยตรง

ใน React ข้อมูลจะไหลลงผ่านพร็อพ คอมโพเนนต์พี่น้องสองตัวไม่มีการเชื่อมต่อโดยตรง การสื่อสารระหว่างคอมโพเนนต์พี่น้องทั้งหมดต้องผ่านคอมโพเนนต์แม่ร่วมกัน

รูปแบบ: สถานะร่วมในคอมโพเนนต์แม่

คอมโพเนนต์แม่เก็บค่าร่วมไว้ในสถานะและส่งค่าให้คอมโพเนนต์พี่น้องทั้งสองตัว ตัวหนึ่งรับค่าในฐานะข้อมูล (ผู้อ่าน) อีกตัวรับฟังก์ชันเรียกกลับเพื่อเปลี่ยนค่า (ผู้เขียน)
function Parent() {
  const [selected, setSelected] = useState(null);
  return (
    <>
      <Picker onSelect={setSelected} />
      <Detail item={selected} />
    </>
  );
}

คอมโพเนนต์พี่น้องผู้อ่านและผู้เขียน

คอมโพเนนต์พี่น้องผู้เขียน (Picker) เรียกฟังก์ชันเรียกกลับของคอมโพเนนต์แม่เมื่อผู้ใช้เลือกค่า ส่วนคอมโพเนนต์พี่น้องผู้อ่าน (Detail) รับค่าที่ได้เป็นพร็อพ คอมโพเนนต์พี่น้องทั้งสองไม่จำเป็นต้องรู้จักกัน
function Picker({ onSelect }) {
  return <button onClick={() => onSelect('item-1')}>Pick item 1</button>;
}

function Detail({ item }) {
  return <p>Selected: {item}</p>;
}

การสื่อสารสองทาง

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

ตัวอย่างช่องกรอกข้อมูลแบบซิงโครไนซ์

แถบเลื่อนและช่องกรอกตัวเลขควบคุมค่าเดียวกัน ทั้งสองตัวรับค่าและ onChange จากคอมโพเนนต์แม่ เมื่อเปลี่ยนแปลงคอมโพเนนต์ใด อีกคอมโพเนนต์จะอัปเดตโดยอัตโนมัติ
function VolumeControl() {
  const [vol, setVol] = useState(50);
  return (
    <>
      <input type="range" value={vol} onChange={e => setVol(+e.target.value)} />
      <input type="number" value={vol} onChange={e => setVol(+e.target.value)} />
    </>
  );
}

หลีกเลี่ยงรูปแบบต่อต้านบัสเหตุการณ์

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

เมื่อคอมโพเนนต์พี่น้องอยู่ห่างกันมาก

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

แยกคอมโพเนนต์พี่น้องออกจากกัน

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

การทดสอบการสื่อสารระหว่างคอมโพเนนต์พี่น้อง

ทดสอบคอมโพเนนต์แม่ โดยจำลองการกระทำในคอมโพเนนต์พี่น้องผู้เขียน (ผ่านส่วนเชื่อมต่อของคอมโพเนนต์แม่) และตรวจสอบว่าคอมโพเนนต์พี่น้องผู้อ่านแสดงค่าที่ถูกต้อง คอมโพเนนต์แม่คือหน่วยประสานงานที่สามารถทดสอบได้

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

คอมโพเนนต์พี่น้องสองตัวของ React สื่อสารกันอย่างไร

สรุปทบทวน

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

ถัดไป

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

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

บทเรียน “รูปแบบการสื่อสารระหว่างคอมโพเนนต์พี่น้อง” ฟรีหรือไม่

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

คุณจะเรียนรู้อะไรในบทเรียน “รูปแบบการสื่อสารระหว่างคอมโพเนนต์พี่น้อง”

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

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

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

บทเรียน “รูปแบบการสื่อสารระหว่างคอมโพเนนต์พี่น้อง” ใช้เวลานานแค่ไหน

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

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

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

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

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