window의 객체의 scrollTo API에 behavior: "smooth" 속성이 있다.
크롬에서는 smooth 하게 잘 동작을 하나 iOS / safari 에서는 정상 작동이 되지 않는다.
그러하여 폴리필이 필요하고, https://www.npmjs.com/package/smoothscroll-polyfill 해당 라이브러리를 이용해 이슈를 해결한적이 있다.
폴리필을 이용해 브라우저에서 지원해주지 않는 기능을 변환하여 사용할 수 있다.
import smoothscroll from 'smoothscroll-polyfill';
...
const scrollToTop = useCallback(()=> {
window.scrollTo({top: 0, left:0, behavior: 'smooth'}),
},[]);
if(typeof window !== 'undefined') smoothscroll.polyfill();
Reference
'JavaScript > React' 카테고리의 다른 글
| ContextAPI 사용자 정의 훅이 있는 팩토리패턴 (0) | 2024.04.10 |
|---|---|
| [React.JS]/[리액트] 특정라인수 이상 text-overflow: ellipsis 처리와 ellipsis 더보기/접기 (1) | 2024.01.01 |
| [React] 리액트 성능 최적화 TODO (0) | 2023.01.14 |
| [React] 리액트 Checkbox 상태관리 (0) | 2023.01.03 |