TG Telegram Group & Channel
Будни разработчика | United States America (US)
Create: Update:

#заметка дня

Не знаю, как вас, но меня очень раздражает то, что в React Router состоянием скролла надо управлять самостоятельно.

Перемещаешься по роутам, а скролл на месте остаётся. Ну типа, што.

К счастью, решение что для v5 React Router, что для v6 одинаковое:


function ScrollToTop() {
const { pathname } = useLocation();

useLayoutEffect(() => {
document.documentElement.scrollTo(0, 0);
}, [pathname]);

return null;
}


И потом вставляете его в контекст роутинга:

<BrowserRouter>
<Routes>
...
</Routes>
<ScrollToTop/>
</BrowserRouter>


Но вот я это всё по привычке написал и решил всё-таки посмотреть документацию. Ну бывает. И вот что там: https://reactrouter.com/en/main/components/scroll-restoration

Восстановление скролла теперь поставляется из коробки! И умеет гораздо больше, чем просто скроллить наверх. Правда, требует изменения корневого роутера. Благо, это несложно.

Например, можно сгенерировать ключ для маршрута и на этом маршруте скролл будет восстанавливаться в предыдущее состояние по заданным вами правилам.

По-моему, очень круто. И хорошо, что решение официальное.

#react #router #бородач

#заметка дня

Не знаю, как вас, но меня очень раздражает то, что в React Router состоянием скролла надо управлять самостоятельно.

Перемещаешься по роутам, а скролл на месте остаётся. Ну типа, што.

К счастью, решение что для v5 React Router, что для v6 одинаковое:


function ScrollToTop() {
const { pathname } = useLocation();

useLayoutEffect(() => {
document.documentElement.scrollTo(0, 0);
}, [pathname]);

return null;
}


И потом вставляете его в контекст роутинга:

<BrowserRouter>
<Routes>
...
</Routes>
<ScrollToTop/>
</BrowserRouter>


Но вот я это всё по привычке написал и решил всё-таки посмотреть документацию. Ну бывает. И вот что там: https://reactrouter.com/en/main/components/scroll-restoration

Восстановление скролла теперь поставляется из коробки! И умеет гораздо больше, чем просто скроллить наверх. Правда, требует изменения корневого роутера. Благо, это несложно.

Например, можно сгенерировать ключ для маршрута и на этом маршруте скролл будет восстанавливаться в предыдущее состояние по заданным вами правилам.

По-моему, очень круто. И хорошо, что решение официальное.

#react #router #бородач


>>Click here to continue<<

Будни разработчика




Share with your best friend
VIEW MORE

United States America Popular Telegram Group (US)