Я створив компонент в 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 для створення та видалення прив'язки подій. Це робить його автономним всередині компонента та забезпечує відсутність протікання, переконуючись, що прив'язка події видалена, якщо / коли компонент, який використовує її, відключений.