Задать вопрос
@historydev
long long long long long .... int

Как отключить скролл при условии что состояние не изменилось?

Здравствуйте. Реализовал чатик, подгружаю по 20 сообщений при прокрутке вверх, при достижении 0 я кручу вниз на 20 сообщений чтобы юзер попал туда, где остановился. Однако попал в ситуацию что сообщения закончились, а меня каждый раз отбрасывает на 20 назад. Как это исправить?

prevMessages - дополнительно подгруженные сообщения
messagesBox - элемент с сообщениями

useEffect(() => {
        if(messagesBox) {
            messagesBox.onscroll = (e) => {
                if(e.target.scrollTop < 1) {
                    e.target.scrollTo(0, e.target.querySelector('.direct-chat-msg:nth-child(20)').offsetTop);
                    const msgID = prevMessages.length ? parseInt(prevMessages[0].id) : parseInt(messages[0].id);
                    socket.emit('getPrevMessages', {roomId, msgID});
                }
                e.preventDefault();
            }
        }
    }, [prevMessages]);


Спасибо.
  • Вопрос задан
  • 53 просмотра
Подписаться 1 Простой Комментировать
Помогут разобраться в теме Все курсы
  • Яндекс Практикум
    Мидл фронтенд-разработчик
    5 месяцев
    Далее
  • Javascript.ru
    Курс по React
    5 недель
    Далее
  • Нетология
    Fullstack-разработчик на Python + нейросети
    20 месяцев
    Далее
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы