Задать вопрос
vertically-challenged
@vertically-challenged

Как сделать scroll сообщений, как в большинстве мессенджеров?

Как можно реализовать прокрутку сообщений таким образом, чтобы всегда было видно последнее сообщение и пользователю не приходилось дергать скроллом вниз, чтобы его увидеть, но и если пользователь решит почитать старые сообщения, пролистав вверх, то его чат не перескакивал бы к новому сообщению, если бы оно пришло?

С первым я как-то почти справился, написав такую функцию:
const positioningScrollbar = (ref) => {
    if (ref.current) {
        ref.current.scrollTop = ref.current.scrollHeight
    }
}

Использовав хук useRef(), повесив ref на контейнер с сообщениями и таким образом получив доступ к DOM элементу, но как справиться со вторым? Сейчас любое новое сообщение перетащит пользователя к себе, даже если он этого бы не хотел

Мой код на codesandbox.io

p.s.
Еще почему-то мой чатик показывает всегда предпоследнее сообщение а не последнее, тоже непонятно, что с этим делать, почему так происходит
  • Вопрос задан
  • 557 просмотров
Подписаться 1 Простой Комментировать
Пригласить эксперта
Ответы на вопрос 1
Комментировать
Ваш ответ на вопрос

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

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