IntersectionObserver สำหรับเอฟเฟกต์ที่ทำงานเมื่อเลื่อน
ใช้ IntersectionObserver ภายใน useEffect เพื่อเรียกใช้แอนิเมชัน การโหลดแบบขี้เกียจ และการเลื่อนแบบไม่สิ้นสุด
IntersectionObserver สำหรับเอฟเฟกต์ที่ทำงานเมื่อเลื่อน เป็นบทเรียน React Academy ฟรีบน CoddyKit นี่คือบทเรียนที่ 4 จากทั้งหมด 4 บทเรียน คุณสามารถอ่านบทเรียนทั้งหมดด้านล่างฟรี — จากนั้นลองปฏิบัติด้วยตัวคุณเองในเบราว์เซอร์พร้อมตัวแก้ไขโค้ดในตัวและติวเตอร์ AI ตลอด 24/7 บทเรียนนี้เป็นส่วนหนึ่งของเส้นทางการเรียน React Academy และความก้าวหน้าของคุณจะซิงค์ข้ามเว็บและแอป CoddyKit คอร์ส React Academy มีบทเรียนทั้งหมด 4 บทเรียน
IntersectionObserver ทำอะไร
API IntersectionObserver ตรวจสอบอย่างมีประสิทธิภาพว่าองค์ประกอบหนึ่งรายการหรือหลายรายการเข้าสู่หรือออกจากพื้นที่แสดงผลของเบราว์เซอร์ (หรือองค์ประกอบบรรพบุรุษที่ระบุ) หรือไม่ ต่างจากตัวรับฟังการเลื่อนที่ทำงานทุกพิกเซล ตัวสังเกตการณ์จะเรียกฟังก์ชันเรียกกลับเฉพาะเมื่อองค์ประกอบข้ามค่าขีดแบ่ง จึงมีประสิทธิภาพมากกว่าสำหรับเอฟเฟกต์ที่อิงตามการเลื่อน
ฟังก์ชันเรียกกลับและรายการของตัวสังเกตการณ์
ฟังก์ชันเรียกกลับจะได้รับอาร์เรย์ของออบเจ็กต์ IntersectionObserverEntry โดยมีหนึ่งรายการต่อองค์ประกอบที่กำลังสังเกต แต่ละรายการมีค่าบูลีน isIntersecting (เป็นจริงเมื่อมองเห็น) และตัวเลข intersectionRatio ระหว่าง 0 ถึง 1 (สัดส่วนขององค์ประกอบที่มองเห็นอยู่ในขณะนั้น) ใช้ค่าเหล่านี้เพื่อกำหนดสถานะการมองเห็น
การสร้างตัวสังเกตการณ์ใน useEffect
สร้างตัวสังเกตการณ์ภายใน useEffect แล้วเรียกใช้ observer.observe(ref.current) เพื่อเริ่มติดตามองค์ประกอบ ต้องผูก ref เข้ากับองค์ประกอบ DOM ที่ต้องการติดตาม สร้างตัวสังเกตการณ์หลังจากติดตั้งคอมโพเนนต์แล้ว เพื่อให้ ref.current มีค่า
การล้างข้อมูล: ยกเลิกการติดตามและตัดการเชื่อมต่อ
ในฟังก์ชันล้างข้อมูลของ useEffect ให้เรียกใช้ observer.unobserve(element) เพื่อหยุดติดตามองค์ประกอบที่ระบุ หรือเรียกใช้ observer.disconnect() เพื่อหยุดการสังเกตทั้งหมด หากลืมล้างข้อมูล ตัวสังเกตการณ์จะยังคงอยู่หลังจากถอดคอมโพเนนต์ออก และอาจทำให้เกิดข้อผิดพลาดหรือการรั่วไหลของหน่วยความจำ
ตัวเลือกค่าขีดแบ่ง
ตัวเลือก threshold ควบคุมเวลาที่ฟังก์ชันเรียกกลับจะทำงาน ค่า 0 จะทำงานทันทีที่มองเห็นพิกเซลใด ๆ ขององค์ประกอบ ส่วนค่า 1 จะทำงานเมื่อมองเห็นองค์ประกอบทั้งหมดเท่านั้น นอกจากนี้ยังส่งอาร์เรย์ เช่น [0, 0.5, 1] เพื่อรับฟังก์ชันเรียกกลับที่ระดับการมองเห็นหลายระดับได้
ตัวเลือก rootMargin
rootMargin ใช้ขยายหรือลดพื้นที่ตัดกันที่มีผล โดยใช้รูปแบบไวยากรณ์คล้าย CSS: '100px 0px' จะทำงานก่อนที่องค์ประกอบจะเข้าสู่พื้นที่แสดงผล 100px ใช้ '-100px' เพื่อให้ทำงานเมื่อองค์ประกอบอยู่ลึกเข้าไปในพื้นที่แสดงผล 100px เท่านั้น วิธีนี้มีประโยชน์สำหรับการโหลดล่วงหน้าหรือการทำภาพเคลื่อนไหวก่อนที่องค์ประกอบจะมองเห็นได้ทั้งหมด
การโหลดรูปภาพเมื่อจำเป็น
หากต้องการโหลดรูปภาพเมื่อจำเป็น ให้กำหนดแอตทริบิวต์ data-src แทน src ในตอนแรก เมื่อระบบสังเกตการณ์ทำงานโดยมีค่า isIntersecting: true ให้คัดลอก data-src ไปยัง src เพื่อเริ่มคำขอเครือข่าย จากนั้นเรียกใช้ observer.unobserve(entry.target) เนื่องจากรูปภาพต้องโหลดเพียงครั้งเดียว
ภาพเคลื่อนไหวที่ทำงานเมื่อเลื่อน
สำหรับภาพเคลื่อนไหวแบบค่อย ๆ ปรากฏ ให้เพิ่มคลาส CSS เมื่อ isIntersecting เปลี่ยนเป็น true: element.classList.add('visible') กำหนดการเปลี่ยนผ่านใน CSS ดังนี้: .card { opacity: 0; transform: translateY(20px); transition: opacity 0.4s, transform 0.4s; } และ .card.visible { opacity: 1; transform: none; } ระบบสังเกตการณ์จะเรียกใช้ตัวกระตุ้นได้อย่างมีประสิทธิภาพ
การวิเคราะห์: การติดตามเนื้อหาที่ดู
IntersectionObserver เหมาะอย่างยิ่งสำหรับการติดตามการมองเห็น เมื่อองค์ประกอบที่มีแอตทริบิวต์ data-analytics-id เข้าสู่พื้นที่มองเห็นตามเกณฑ์ 0.5 ให้ส่งเหตุการณ์การวิเคราะห์ วิธีนี้วัดได้อย่างแม่นยำว่าส่วนใดของเนื้อหาที่ผู้ใช้อ่านจริง และเชื่อถือได้มากกว่าการใช้เปอร์เซ็นต์ความลึกของการเลื่อนแบบง่าย ๆ อย่างมาก
การสังเกตองค์ประกอบหลายรายการ
อินสแตนซ์ IntersectionObserver เดียวสามารถสังเกตองค์ประกอบหลายรายการได้ โดยเรียกใช้ observer.observe(element) กับแต่ละองค์ประกอบ องค์ประกอบที่สังเกตทั้งหมดจะใช้ฟังก์ชันเรียกกลับและตัวเลือกเดียวกัน ภายในฟังก์ชันเรียกกลับ ให้ใช้ entry.target เพื่อระบุว่าองค์ประกอบใดเป็นผู้กระตุ้นการแจ้งเตือน
การสร้างฮุก useInView
ฮุก useInView ที่นำกลับมาใช้ใหม่ได้จะคืนค่า [ref, inView] ให้ผูก ref เข้ากับองค์ประกอบใดก็ได้ แล้วอ่านค่า inView เพื่อทราบว่าองค์ประกอบนั้นกำลังมองเห็นอยู่หรือไม่ ฮุกรับออบเจ็กต์ options สำหรับกำหนด threshold และ rootMargin แนวคิดนามธรรมนี้ทำให้เอฟเฟกต์จากการเลื่อนมีรูปแบบเชิงประกาศในทุกคอมโพเนนต์
เกณฑ์ของ IntersectionObserver
เกณฑ์ของ IntersectionObserver ที่เป็น 0 หมายความว่าอย่างไร
สรุปบทเรียน: IntersectionObserver
IntersectionObserver ติดตามการมองเห็นขององค์ประกอบได้อย่างมีประสิทธิภาพโดยใช้ isIntersecting และ intersectionRatio ควรล้างการสังเกตเสมอด้วย unobserve หรือ disconnect ใช้ threshold เพื่อควบคุมจุดกระตุ้น และใช้ rootMargin เพื่อขยายพื้นที่ตรวจจับ นำไปใช้กับการโหลดเมื่อจำเป็น ภาพเคลื่อนไหว และการติดตามการวิเคราะห์
เรียนรู้ React ด้วย AI tutor — ฟรี
เขียนและเรียกใช้โค้ดจริงในเบราว์เซอร์ของคุณ รับความช่วยเหลือทันทีจาก AI tutor 24/7 และเรียนรู้ต่อจากที่คุณหยุดบนเว็บหรือในแอป
- คอร์ส
- 88
- บทเรียน
- 324
คำถามที่พบบ่อย
บทเรียน “IntersectionObserver สำหรับเอฟเฟกต์ที่ทำงานเมื่อเลื่อน” ฟรีหรือไม่
ใช่ — ข้อความเต็มของ “IntersectionObserver สำหรับเอฟเฟกต์ที่ทำงานเมื่อเลื่อน” ฟรีให้อ่านที่นี่บนเว็บ เพื่อปฏิบัติแบบโต้ตอบ (ตัวแก้ไขโค้ดในตัวและติวเตอร์ AI ตลอด 24/7) และปลดล็อคส่วนที่เหลือของคอร์ส React Academy ให้อัปเกรดเป็น CoddyKit PRO คอร์ส React Academy มีบทเรียนทั้งหมด 4 บทเรียน
คุณจะเรียนรู้อะไรในบทเรียน “IntersectionObserver สำหรับเอฟเฟกต์ที่ทำงานเมื่อเลื่อน”
ใช้ IntersectionObserver ภายใน useEffect เพื่อเรียกใช้แอนิเมชัน การโหลดแบบขี้เกียจ และการเลื่อนแบบไม่สิ้นสุด คุณปฏิบัติ React Academy ด้วยโค้ดที่ใช้งานได้จริงที่คุณเรียกใช้โดยตรงในเบราว์เซอร์ และติวเตอร์ AI ตลอด 24/7 ตอบคำถามของคุณขณะที่คุณไปผ่านบทเรียน
คุณต้องมีประสบการณ์ก่อนที่จะเริ่มเรียน React Academy หรือไม่
ไม่จำเป็นต้องมีประสบการณ์มาก่อน React Academy บน CoddyKit ออกแบบมาสำหรับผู้เริ่มต้นไปจนถึงผู้เรียนขั้นสูง คุณสามารถเริ่มต้นที่นี่หรือเริ่มจากตัวแรกและเรียนด้วยความเร็วของคุณเอง นี่คือบทเรียนที่ 4 จากทั้งหมด 4 บทเรียน
บทเรียน “IntersectionObserver สำหรับเอฟเฟกต์ที่ทำงานเมื่อเลื่อน” ใช้เวลานานแค่ไหน
บทเรียน CoddyKit ส่วนใหญ่ใช้เวลาประมาณ 5–10 นาที แต่ละบทเรียนจึงสั้นและเป็นแบบโต้ตอบ คุณสามารถก้าวหน้าอย่างต่อเนื่องและกลับมาเรียนต่อจากตรงที่เพิ่งหยุดบนเว็บและแอปได้เลย
ฉันเขียนและรันโค้ดในบทเรียน React Academy นี้ได้ไหม
ได้ บทเรียน React Academy ทุกบทมีตัวแก้ไขโค้ดในตัว คุณจึงเขียนและรันโค้ดจริงได้เลยในเบราว์เซอร์ และได้รับข้อเสนอแนะจาก AI ในทันที — ไม่ต้องติดตั้งในเครื่องของคุณ
บทเรียนทั้งหมดในหลักสูตรนี้
- Clipboard API: การคัดลอกและวางใน React
- Geolocation API ในคอมโพเนนต์ React
- Notifications API และการจัดการสิทธิ์
- IntersectionObserver สำหรับเอฟเฟกต์ที่ทำงานเมื่อเลื่อน