восстановить позицию прокрутки с помощью истории push / replace state - PullRequest
0 голосов
/ 14 июня 2019

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

Мне бы хотелось иметь кнопку «Назад» в подробном представлении, которая выводит меня в представление списка независимо от того, как часто я перемещался в подробных видах.

В настоящее время я попробовал это: я передаю url: string моему компоненту навигации.вот URL моего списка.

тогда я хочу изменить свое состояние, когда нажимаю кнопку "Назад":

 const onClickBack = () => {
        const stateData = {
            path: window.location.href,
            scrollTop: 300
        }
        window.history.replaceState(stateData, "", backURL)


        const stateData2 = {
            path: window.location.href,
            scrollTop: 300
        }

        window.history.pushState(stateData2, "", backURL)

        window.history.back()
    }

я скопировал этот код из история pushState и позиция прокрутки

независимо от того, как часто я перемещался, я могу вернуться к своему списку сейчас.но как я могу восстановить все состояние, например, положение прокрутки?

мне нужно передать весь объект состояния?

1 Ответ

0 голосов
/ 14 июня 2019

Кажется, вы хотите вручную восстановить позицию прокрутки. Если это так, то вы должны сообщить истории API о своем намерении.

if ('scrollRestoration' in history) {
  // Back off, browser, I got this...
  history.scrollRestoration = 'manual';
}

Таким образом, позиция прокрутки предыдущего URL также останется.

документы: https://developers.google.com/web/updates/2015/09/history-api-scroll-restoration

...