Как сохранить положение прокрутки, предоставленное браузером, при использовании прокрутки вверх с маршрутизатором?

Я хочу сохранить позицию прокрутки на предыдущей странице, когда пользователь возвращается с помощью навигации в браузере и прокручивает вверх при переходе по ссылке.

Я использую компонент ScrollToTop, как предложено в этом ответе о прокрутке наверх в досягаемости маршрутизатора.

// ScrollToTop.js
import React from 'react'

export const ScrollToTop = ({ children, location }) => {
  React.useEffect(() => window.scrollTo(0, 0), [location.pathname])
  return children
}

Компонент работает должным образом: он прокручивается вверх, когда я загружаю другую страницу, но сейчас современные браузеры могут сохранять предыдущую позицию прокрутки страниц в истории. Поэтому, если я нажму кнопку "Назад" в браузере, я вернусь на предыдущую страницу в позиции прокрутки, которую я остановил.

Однако при использовании ScrollToTop, Он прокручивается вверх, даже когда я возвращаюсь назад, используя кнопку "Назад".

Как я могу настроить его, чтобы прокручивать вверх только при переходе по ссылке, и в противном случае сохранить предыдущую позицию прокрутки?

0 ответов

Другие вопросы по тегам