Мне нужно отловить событие scroll вверх и вниз, и в зависимости от этого менять this.props.history.
componentDidMount() {
window.addEventListener('scroll', this.handleScroll);
}
componentWillUnmount() {
window.removeEventListener('scroll', this.handleScroll);
}
handleScroll = () => {
if (window.scrollY === 0) {
console.log('up');
}
else if (window.scrollY !== 0) {
console.log('down');
}
};
Попробуйте данный вариант (главное чтобы страница скролилась):
Создаете в компоненте переменную в которую будете записывать последнее значение (по умолчанию 0) и переменную для направления (по умолчанию false - она нужна для того чтобы не делать лишние изменения в this.props.history):
class ... extends ... {
lastScroll = 0
directionDown = false
componentDidMount() {
...
}
}
Далее переписываете свою функцию:
handleScroll = () => {
// Берете значение
const scrollTop = document.documentElement.scrollTop || document.body.scrollTop;
// Сравниваете 2 значение
if (scrollTop > this.lastScroll && !this.directionDown) {
console.log('down');
this.directionDown = true;
// здесь манипуляции с this.props.history
} else if (scrollTop < this.lastScroll && this.directionDown) {
console.log('up');
this.directionDown = false;
// здесь манипуляции с this.props.history
}
this.lastScroll = scrollTop;
}
Если нужно чтобы просто отслеживалось вниз и вверх (не изменения, было вверх стало вниз), то уберите все что связано с directionDown.
Сборка персонального компьютера от Artline: умный выбор для современных пользователей