Задать вопрос
Legalas61
@Legalas61
Студент

Как правильно вызывать useRouter в NextJS, чтобы был 1 рендор и query был не пустым?

const SomeName = () => {
  const router = useRouter();
  console.log(123); // 2 раза вывод в консоль
return <></>
}

Баг || фича выпадает только при перезагрузки страницы. При переходе по ссылке норм работает.
Роутер нужен для получения query.
Из мыслей как исправить - использовать стандартные методы window

UPD:
Если завернуть в useEffect, то получаю одиночный рендор компонеты, но тогда роутер приходит с пустом объектом query. Данные можно выдрать только через asPath. Как правильно вызывать useRouter, чтобы был 1 рендор и query был не пустым?
  • Вопрос задан
  • 279 просмотров
Подписаться 2 Простой 4 комментария
Решения вопроса 1
Legalas61
@Legalas61 Автор вопроса
Студент
Пришел к такому костылю:
const router = useRouter();
const query = useRef({});

useEffect(() => {
    const urlQuery = new URLSearchParams(router.asPath.split("?")[1]);
    Array.from(urlQuery.entries()).forEach(([key, value]) => {
      query.current[key] = value;
    });
    console.log(query.current);
  }, [router.asPath]);
Ответ написан
Комментировать
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы