Задать вопрос
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 был не пустым?
  • Вопрос задан
  • 299 просмотров
Подписаться 2 Простой 4 комментария
Помогут разобраться в теме Все курсы
  • Яндекс Практикум
    Мидл фронтенд-разработчик
    5 месяцев
    Далее
  • Яндекс Практикум
    React-разработчик
    3 месяца
    Далее
  • Яндекс Практикум
    Фронтенд-разработчик
    10 месяцев
    Далее
Решения вопроса 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]);
Ответ написан
Комментировать
Пригласить эксперта
Ваш ответ на вопрос

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

Похожие вопросы
ITK academy Нижний Новгород
от 50 000 до 90 000 ₽
ITK academy Воронеж
от 50 000 до 90 000 ₽
IT ATLAS Москва
от 200 000 до 250 000 ₽