'react-window scroll to bottom
I'm using react-window to render a long list to show messages. but how can I move scroll to bottom for each new messages?
I could handle it for normal Div by using useRef, but what about react-window?
const list = useRef<HTMLDivElement>(document.createElement('div'));
useEffect(() => {
list.current.scrollTop = list.current.scrollHeight;
}, [message]);
and:
<FixedSizeList
width="100%"
height={500}
itemCount={messages.length}
itemSize={40}
itemData={messages}
>
{Row}
</FixedSizeList>
Solution 1:[1]
I'd create a ref to attach to FixedSizeList, then create a function that scrolls to the bottom of that list and have an effect that listens to when a new item is added to the list. Something like:
function ListComponent({ messages }) {
const listRef = useRef(null);
const scrollToBottom = () =>
listRef?.current.scrollToItem(messages.length);
useEffect(() => {
scrollToBottom();
}, [messages]);
return (
<FixedSizeList
width="100%"
height={500}
itemCount={messages.length}
itemSize={40}
itemData={messages}
ref={listRef}
>
{Row}
</FixedSizeList>
);
}
Sources
This article follows the attribution requirements of Stack Overflow and is licensed under CC BY-SA 3.0.
Source: Stack Overflow
| Solution | Source |
|---|---|
| Solution 1 | bopbopbop |
