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