Как удалить положение прокрутки с помощью React-Router v6 ⇐ Javascript
-
Гость
Как удалить положение прокрутки с помощью React-Router v6
У меня есть приложение реагирования, и я пытаюсь удалить предыдущую страницу scroll-position.
Пожалуйста, я был бы признателен, если бы вы поняли мою проблему, прежде чем закончить.
Я не хочу сохранять историю прокрутки. Я хочу, чтобы оно всегда возвращалось в начало страницы.
Я использовал приведенное ниже решение, чтобы приложение прокручивало страницу обратно к началу всякий раз, когда пользователь переходит на новую страницу.
import { useEffect } из «реагировать»; импортировать {useLocation} из 'реагировать-маршрутизатор-дом'; const ScrollToTop = ({дети }) => { const {путь} = useLocation(); useEffect(() => { окно.scrollTo(0, 0); }, [путь]); вернуть детей || нулевой; }; экспортировать ScrollToTop по умолчанию; Приведенный выше код работает отлично и без проблем. Что у меня не работает:
Когда пользователь нажимает Кнопку, которую я создал с помощью Ссылки из react- router-dom они переходят на новую страницу (правильную страницу), но позиция прокрутки соответствует предыдущей странице (страница они откуда).
Я пробовал использовать эти крючки.
[*]useLayoutEffect [*]withRouter (удален из React-Router v6) [*]useHistory (удален из React-Router v6 [*]useNavigate
Они не работают.
Как мне решить эту проблему? Или я что-то упускаю?
Я также попробовал реализовать решение, представленное ниже. Но это не сработает.
import { useEffect } из «реагировать»; импортировать {withRouter} из 'реагировать-маршрутизатор-дом'; функция ScrollToTop({история }) { useEffect(() => { const unlisten = History.listen(() => { окно.scrollTo(0, 0); }); возврат () => { не слушать(); } }, []); возврат (ноль); } экспортировать по умолчанию с помощью Router(ScrollToTop);
У меня есть приложение реагирования, и я пытаюсь удалить предыдущую страницу scroll-position.
Пожалуйста, я был бы признателен, если бы вы поняли мою проблему, прежде чем закончить.
Я не хочу сохранять историю прокрутки. Я хочу, чтобы оно всегда возвращалось в начало страницы.
Я использовал приведенное ниже решение, чтобы приложение прокручивало страницу обратно к началу всякий раз, когда пользователь переходит на новую страницу.
import { useEffect } из «реагировать»; импортировать {useLocation} из 'реагировать-маршрутизатор-дом'; const ScrollToTop = ({дети }) => { const {путь} = useLocation(); useEffect(() => { окно.scrollTo(0, 0); }, [путь]); вернуть детей || нулевой; }; экспортировать ScrollToTop по умолчанию; Приведенный выше код работает отлично и без проблем. Что у меня не работает:
Когда пользователь нажимает Кнопку, которую я создал с помощью Ссылки из react- router-dom они переходят на новую страницу (правильную страницу), но позиция прокрутки соответствует предыдущей странице (страница они откуда).
Я пробовал использовать эти крючки.
[*]useLayoutEffect [*]withRouter (удален из React-Router v6) [*]useHistory (удален из React-Router v6 [*]useNavigate
Они не работают.
Как мне решить эту проблему? Или я что-то упускаю?
Я также попробовал реализовать решение, представленное ниже. Но это не сработает.
import { useEffect } из «реагировать»; импортировать {withRouter} из 'реагировать-маршрутизатор-дом'; функция ScrollToTop({история }) { useEffect(() => { const unlisten = History.listen(() => { окно.scrollTo(0, 0); }); возврат () => { не слушать(); } }, []); возврат (ноль); } экспортировать по умолчанию с помощью Router(ScrollToTop);
Мобильная версия