컴퓨터 구조와 프로그래밍 실행 과정, 자바스크립트 실행과정에 대한 공부가 더 필요함
scrollHeight, clientHeight(ref로 접근)를 사용해 자식의 높이나 너비가 부모의 것보다 클 때 상태를 true로 바꿔준다
import * as React from 'react';
export const useIsOverflow = (ref, callback) => {
const [isOverflow, setIsOverflow] = React.useState(undefined);
React.useLayoutEffect(() => {
const { current } = ref;
const trigger = () => {
const hasOverflow = current.scrollHeight > current.clientHeight;
setIsOverflow(hasOverflow);
if (callback) callback(hasOverflow);
};
if (current) {
trigger();
}
}, [callback, ref]);
return isOverflow;
};