ฉันได้สร้างส่วนประกอบใน React ซึ่งควรจะอัปเดตสไตล์ของตัวเองในการเลื่อนหน้าต่างเพื่อสร้างเอฟเฟกต์พารัลแลกซ์
render
วิธีส่วนประกอบมีลักษณะดังนี้:
function() {
let style = { transform: 'translateY(0px)' };
window.addEventListener('scroll', (event) => {
let scrollTop = event.srcElement.body.scrollTop,
itemTranslate = Math.min(0, scrollTop/3 - 60);
style.transform = 'translateY(' + itemTranslate + 'px)');
});
return (
<div style={style}></div>
);
}
วิธีนี้ใช้ไม่ได้เนื่องจาก React ไม่ทราบว่าส่วนประกอบมีการเปลี่ยนแปลงดังนั้นองค์ประกอบจึงไม่ได้รับการแสดงผล
ฉันได้ลองจัดเก็บค่าitemTranslate
ในสถานะของส่วนประกอบและเรียกsetState
ในการเรียกกลับแบบเลื่อน อย่างไรก็ตามสิ่งนี้ทำให้การเลื่อนไม่สามารถใช้งานได้เนื่องจากช้ามาก
ข้อเสนอแนะเกี่ยวกับวิธีการทำสิ่งนี้หรือไม่?
render
ในเธรดเดียวกัน) ควรเกี่ยวข้องกับตรรกะที่เกี่ยวข้องกับการแสดงผล / อัปเดต DOM จริงใน React เท่านั้น ดังที่แสดงโดย @AustinGreco ด้านล่างคุณควรใช้วิธี React lifecycle ที่กำหนดเพื่อสร้างและลบการเชื่อมโยงเหตุการณ์ของคุณ สิ่งนี้ทำให้มีอยู่ภายในส่วนประกอบและทำให้แน่ใจว่าไม่มีการรั่วไหลโดยการตรวจสอบให้แน่ใจว่าการเชื่อมโยงเหตุการณ์ถูกลบออกถ้า / เมื่อส่วนประกอบที่ใช้มันไม่ได้ต่อเชื่อม