// 라우터 쓸 때
<Routes>
<Route path='/' element={<Search />} />
<Route path='favorite' element={<Favorite />} />
</Routes>
// useLocation
import { useLocation } from 'react-router-dom'
const inFavoritesPage = location.pathname === '/favorite'
스크롤 이벤트는 보다 정확한 높이값을 알기 위해 offsetTop 을 사용하는데, 이는 이벤트가 발생할 때 마다 layout 을 다시 하게 되는 reflow 를 발생시킨다. 이는 브라우저에 상당한 부담이 되며, 화면 버벅임도 낳을 수 있다.
때문에 스크롤 이벤트를 제어하기 위한 방법으로 debounce, throttle 기법을 사용할 수 있는데,
Intersection Observer 는 debounce나 throttle를 사용하지 않고도 브라우저에 부담을 가하지 않고 무한 스크롤을 간편하게 구현 할 수 있는 API 이다 (IE 는 지원하지 않는다)
- 디바운싱은 연이어 이벤트가 발생할 때(지속 시간에 상관하지 않고) 맨 마지막에 발생한 이벤트만 호출하는 것
- 스로틀링은 마지막으로 발생한 이벤트 이후 특정 시간 동안 이벤트가 발생하지 않도록 하는 것
사용할 때
예측할 수 있는 에러는 모두 예측하자!