const edirotRef = useRef<HTMLDivElement>(null);
const [currentScrollHeight, setCurrentScrollHeight] = useState<number>(0);
useEffect(() => {
if (edirotRef.current && document.scrollingElement) {
if (currentScrollHeight < edirotRef.current.scrollHeight) {
document.scrollingElement.scrollTop = edirotRef.current.scrollHeight;
}
setCurrentScrollHeight(edirotRef.current.scrollHeight);
}
}, [editor?.state.selection, currentScrollHeight]);
editor의 scrollHeight를 가져오기 위해 useRef를 사용해 editorRef를 선언한다.
이전 화면크기와 현재 화면크기를 비교하기위해 useState로 currentScrollHeight를 선언한다.
editor의 selection 혹은 currentScrollHeight이 변경되면 useEffect 안 함수를 확인한다.
현재 scrollHeight보다 이전의 scrollHeight보다 크면 스크롤을 가장 아래로 이동시킨다.
-> document.scrollingElement.scrollTop = edirotRef.current.scrollHeight;