Фон
Я работаю над приложением чата, где у меня есть элемент ul, который отображает сообщения с использованием элементов li. В какой-то момент элемент ul переполняет родительский элемент.
Проблема
Теперь проблема в том, когда я переключаю чаты. Есть ли способ заставить элемент ul отображать переполненные элементы li, то есть отображать последние элементы li элемента ul вместо отображения из первых элементов li, а пользователь прокручивать вниз, потому что это для ужасного взаимодействия с пользователем.
Я пытался использовать метод scrollIntoView (), чтобы элемент ul прокручивался до последнего сообщения при каждом добавлении нового элемента li, и это прекрасно работает, когда пользователь находится в чате, но один раз. пользователь переключает чаты, элемент ul нового чата заметно прокручивается до последнего элемента в нем. Я хотел бы отображать элементы снизу без прокрутки элемента ul вообще.
Пример кода
const MessagingScreen = ({ openChat }) => {
const messagesEnd = useRef();
const [message, setMessage] = useState("");
const scrollToBottom = () => {
if (openChat.messages.length > 0) {
messagesEnd.current.scrollIntoView({ behaivor: "smooth", block: "start" });
}
}
useEffect(() => {
scrollToBottom();
}, [openChat.messages])
return (
<main className="flex flex-column flex-grow mh-50">
<ul className="chat-msgs flex-grow w-100 h-100 bg-white overflow-y-scroll instant">
{openChat.messages.map(chatMessageDetails =>
<ChatMessageItem {...chatMessageDetails} key={chatMessageDetails.message}/>)
}
<div ref={messagesEnd}/>
</ul>
</main>
)
}