Next.js — Можно ли определить, когда доступ к странице осуществляется напрямую или через или router.push.?

#reactjs #next.js

#reactjs #next.js

Вопрос:

Я хочу реализовать некоторое условное поведение scrollTo в зависимости от того, осуществляется ли прямой доступ к странице путем ввода URL-адреса в браузере или когда страница отображается в результате навигации по маршруту через <Link> или router.push()

Есть ли способ различать два в Next.js ?

РЕДАКТИРОВАТЬ 1:

Благодаря некоторым подсказкам в комментариях я нашел один способ, но не уверен, что он надежный:

 useEffect(() => {
    if (Object.keys(router.components).length == 2) {
      console.log("Is fullpage refresh");
    } else {
      console.log("Is is route change");
    }
  }, []);
 

Комментарии:

1. Да, когда вы впервые обращаетесь к странице по URL, router . запрос не определен. Вы можете это проверить.

2. Привет @VicenteC Я пробовал проверять с useEffect(() => { console.log(router); }, []); помощью запроса, но в обоих случаях это пустой объект. Однако существует router.components, который выглядит как его отслеживание, если другие страницы были отображены ранее.