есть вертикальный скролл.
Проблема в том, что по дефолту пользователю приходится самому скролить чат вниз чтобы дойти до последних сообщений, так вот можно как-то сделать это автоматически?
Создай невидимый спан внизу блока с сообщениями и повесь на него реф. Сделай юзэффект, в котором будешь делать скролл вниз при обновлении массива сообщений
https://developer.mozilla.org/ru/docs/Web/API/Element/scrollIntoView
Спасибо, посмотрю
useEffect(() => { messagesRef.current?.scrollIntoView({ // smooth - плавно behavior: 'auto', }); }, [messages]); ... <span ref={messagesRef}></span>
Не помогло, почему-то.
Так работать не будет. Поверь реф не на блок сообщений, а на спан внутри блока
Сделал якорь в самом низу блока, но так-же не сработало. Прокрутку делаю при первом рендеринге компонента.
А так стоп. Почему у тебя в зависимости эффекта реф находится? Там должен быть массив сообщений
Не-не, щас там пустой массив, мне надо прокрутить только при первом рендеринге.
Пустой массив зависимостей я имею ввиду.
Только при первом? Ну тогда оставить пустым, как сделал. Так не работает?
Не работает, почему то внешний скролл только срабатывает до самого низа, который для всего документа, а не для блока с сообщениями.
У блока сообщений задана высота?
Да, max-height задана
Честно, даже не знаю.. Как я предлагал должно работать, попробуй поиграть с разными вещами: задать временно жёстко высоту, например, и тд. Это 100% рабочий вариант, что-то где-то мешает
Нет, это не должно никак мешать. Ты же привязываешься к рефу внутри контейнера
Ладно бы вообще скрол не срабатывал, но почему то внешний докручивается до низа. Буду пробовать - спасибо за совет.
Да, мне тоже непонятно это. Если решишь, скажи, интересно. Я тоже подумаю
Попробовал убрать зависимости в useEffect и теперь докручивает, но понятно что так делать не надо, поэтому даже не знаю.
Обсуждают сегодня