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

การสร้าง API แบบ Imperative สำหรับคอมโพเนนต์

ออกแบบอินพุตที่จัดการโฟกัส โมดัลที่มีเมธอดเปิดและปิด และรูปแบบคอมโพเนนต์แบบ imperative อื่น ๆ

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

การออกแบบ FocusableInput

เริ่มต้นด้วยการกำหนดสัญญา: FocusableInput อาจเปิดเผยการโฟกัส การยกเลิกโฟกัส และ getValue ห่อหุ้มด้วย forwardRef เก็บการอ้างอิงภายในที่ชี้ไปยังช่องป้อนข้อมูลจริง แล้วส่งคืนการดำเนินการทั้งสามผ่าน useImperativeHandle

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

VideoPlayer ที่เปิดเผยการเล่น/หยุดชั่วคราว/seekTo

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

seekTo รับเวลาเป็นวินาทีและกำหนดค่า currentTime ทำให้คอมโพเนนต์แม่ควบคุมการเล่นได้อย่างแม่นยำ ซึ่งคงทำได้ไม่สะดวกหากขับเคลื่อนด้วยพร็อพเพียงอย่างเดียว

คารูเซลที่เปิดเผยการไปถัดไป/ไปก่อนหน้า/goToSlide

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

แนวทางนี้ผสานตัวกระตุ้นเชิงคำสั่งเข้ากับการเรนเดอร์เชิงประกาศ: คอมโพเนนต์แม่สั่งการเปลี่ยนผ่าน แล้วคารูเซลเรนเดอร์ผลลัพธ์ผ่านลำดับการทำงานของสถานะตามปกติ

การจัดทำเอกสารเอพีไอเชิงคำสั่ง

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

ให้มองแฮนเดิลเหมือนพื้นผิวเอพีไออื่น ๆ: รายการอ้างอิงสั้น ๆ ที่แสดงเมธอด เช่น การเล่น การหยุดชั่วคราว และ seekTo(วินาที) จะช่วยป้องกันการใช้งานผิดและความสับสน

ความเข้ากันได้ย้อนหลังเมื่อพัฒนาแฮนเดิล

เมื่อผู้ใช้งานพึ่งพาแฮนเดิลแล้ว การลบหรือเปลี่ยนชื่อเมธอดถือเป็นการเปลี่ยนแปลงที่ทำให้ใช้งานร่วมกันไม่ได้ ควรเพิ่มเมธอดใหม่แทนการแก้ลายเซ็นเดิม และประกาศเลิกใช้งานอย่างเหมาะสมก่อนลบสิ่งใดออก

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

พร็อพแบบผสม: เชิงคำสั่งและควบคุม

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

แนวทางคือใช้พร็อพสำหรับสถานะและการกำหนดค่า และเก็บแฮนเดิลเชิงคำสั่งไว้สำหรับการดำเนินการครั้งเดียวที่ถูกกระตุ้นในช่วงเวลาเฉพาะ

การทดสอบด้วยการอัปเดตที่ควบคุมและการเรียกกลับของการอ้างอิง

หากต้องการทดสอบเอพีไอเชิงคำสั่ง ให้เรนเดอร์คอมโพเนนต์พร้อมการอ้างอิง ห่อการโต้ตอบไว้ในการอัปเดตที่ควบคุม แล้วเรียกเมธอดที่เปิดเผยผ่าน ref.current จากนั้นตรวจสอบผลลัพธ์ที่สังเกตได้ เช่น วิดีโอหยุดชั่วคราวหรือดัชนีสไลด์เปลี่ยนแปลง

การเรียกกลับของการอ้างอิงสามารถเก็บแฮนเดิลระหว่างการเรนเดอร์ ทำให้การทดสอบมีการอ้างอิงที่เสถียรสำหรับเรียกเมธอด

เรื่องราวของสตอรีบุ๊ก

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

เรื่องราวเหล่านี้ยังทำหน้าที่เป็นเอกสารที่มีชีวิต โดยแสดงให้เห็นอย่างชัดเจนว่าเอพีไอเชิงคำสั่งทำงานอย่างไรเมื่อแยกออกมาใช้งานโดยลำพัง

ตัวอย่างในโลกจริง

แฮนเดิลเชิงคำสั่งพบได้บ่อยเมื่อห่อหุ้มไลบรารีที่ไม่ใช่รีแอ็กต์ ไลบรารีแผนภูมิเปิดเผยเมธอดสำหรับวาดใหม่หรืออัปเดต ชุดพัฒนาซอฟต์แวร์แผนที่เปิดเผย panTo และ setZoom ส่วนโปรแกรมแก้ไขข้อความสมบูรณ์เปิดเผย insertText หรือ getContents

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

การรักษาแฮนเดิลให้เสถียร

เมธอดบนแฮนเดิลมักปิดล้อมสถานะปัจจุบันไว้ จึงควรใช้อาร์เรย์การพึ่งพาของ useImperativeHandle เพื่อรีเฟรชเมธอดเมื่อจำเป็น และใช้ useCallback กับตัวช่วยภายในเพื่อหลีกเลี่ยงการปิดล้อมค่าที่ล้าสมัย

แฮนเดิลที่จัดการอย่างดีจะทำงานกับค่าที่เป็นปัจจุบันเสมอ ดังนั้นเมื่อคอมโพเนนต์แม่เรียก getValue หรือ seekTo พฤติกรรมที่ได้จะสอดคล้องกับการเรนเดอร์ล่าสุด

ตรวจสอบอย่างรวดเร็ว: การออกแบบเอพีไอเชิงคำสั่ง

นำแนวทางการออกแบบไปใช้กับเอพีไอของคอมโพเนนต์เชิงคำสั่ง

สรุปทบทวน: เอพีไอของคอมโพเนนต์เชิงคำสั่ง

คุณได้ออกแบบแฮนเดิลสำหรับ FocusableInput, VideoPlayer และคารูเซล โดยแต่ละรายการเปิดเผยเมธอดการดำเนินการจำนวนเล็กน้อย ควรจัดทำเอกสารและจัดเวอร์ชันให้เมธอดเหล่านั้น เนื่องจากผู้ใช้งานพึ่งพาเมธอดเหล่านี้ในฐานะเอพีไอสาธารณะ

ผสานการดำเนินการเชิงคำสั่งเข้ากับพร็อพเชิงประกาศ ทดสอบผ่าน ref.current ภายในการอัปเดตที่ควบคุม และสาธิตพฤติกรรมในสตอรีบุ๊ก รูปแบบเดียวกันนี้ยังใช้ห่อหุ้มไลบรารีแผนภูมิ แผนที่ และโปรแกรมแก้ไขได้อย่างเป็นระเบียบ

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

บทเรียน “การสร้าง API แบบ Imperative สำหรับคอมโพเนนต์” ฟรีหรือไม่

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

คุณจะเรียนรู้อะไรในบทเรียน “การสร้าง API แบบ Imperative สำหรับคอมโพเนนต์”

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

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

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

บทเรียน “การสร้าง API แบบ Imperative สำหรับคอมโพเนนต์” ใช้เวลานานแค่ไหน

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

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

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

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

  1. forwardRef: การเปิดเผยรีฟ DOM ให้คอมโพเนนต์แม่
  2. useImperativeHandle: ค่าที่กำหนดเองของอินสแตนซ์
  3. การสร้าง API แบบ Imperative สำหรับคอมโพเนนต์
  4. ควรใช้ API แบบ Imperative หรือ Declarative เมื่อใด
← กลับไปที่ React Academy