Мне нужно отловить событие 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.
Кофе для программистов: как напиток влияет на продуктивность кодеров?
Рекламные вывески: как привлечь внимание и увеличить продажи
Стратегії та тренди в SMM - Технології, що формують майбутнє сьогодні
Выделенный сервер, что это, для чего нужен и какие характеристики важны?
Современные решения для бизнеса: как облачные и виртуальные технологии меняют рынок
использую следующие заголовки http
Есть переменная которая хранит строки текста, текст разделяется пробеламиКак извлечь из переменной слова и расположить с новой строки с последующим...
У меня есть форма, при сабмите которой мне нужно что бы на странице появились введенные данныеНа странице они выводятся так: Есть один блок...