Я реализую систему на основе реакции, где я использую обработчик onScroll для определения смещения Y от верхней части области просмотра. Когда текущая позиция прокрутки равна числу, хранящемуся в отдельном объекте, его необходимо обнаружить.
Теперь это мой код:
onActivitiesScroll = (event) => {
let positionYTrack = _.find(
this.state.trackHeaderCardPositionsY,
{ positionY: Math.floor(event.nativeEvent.contentOffset.y) }
);
console.info(positionYTrack);
}
Проблема в этой части: { positionY: Math.floor(event.nativeEvent.contentOffset.y) }
Event.nativeEvent.contentOffset.y - это точное число (с плавающей точкой), а positionY - это свойство в объекте состояния. Проблема в том, что когда я прокручиваю, он пропускает многие позиции прокрутки из-за ограниченного количества кадров, обрабатываемых обработчиком onScroll.
Что этот код делает прямо сейчас:
если Math.floor(event.nativeEvent.contentOffset.y)точно равно одно из значений свойства positionY в состоянии, он должен его зарегистрировать. Я хочу сделать так:
если Math.floor(event.nativeEvent.contentOffset.y) находится в диапазоне от текущей позиции - 10 до текущей позиции +10, он должен это обнаружить.
Есть идеи, как этого можно достичь? Я просто не могу найти решение для этого, даже после того, как проспал это.



![Безумие обратных вызовов в javascript [JS]](https://i.imgur.com/WsjO6zJb.png)


_.find также поддерживает функцию сравнения значений. Вот простой пример, который вы можете использовать, чтобы определить, находится ли y в пределах допустимого диапазона:
onActivitiesScroll = (event) => {
let positionYTrack = _.find(
this.state.trackHeaderCardPositionsY,
position => {
const y = Math.floor(event.nativeEvent.contentOffset.y);
const min = y - 10;
const max = y + 10;
return min >= position <= max;
}
);
}