Size: a a a

Next.js — русскоговорящее сообщество

2019 August 26

YL

Yury Lavrukhin in Next.js — русскоговорящее сообщество
вроде да, проверь
источник

M

Margarita in Next.js — русскоговорящее сообщество
Почему
import { useRouter } from 'next/router';
const router = useRouter();
router.push('/shops/details/123', '/shops/details/123', { shallow: true });
Вызывает перезагрузку страницы и как этого избежать? прошлась по сообщениям чата, вроде так у всех работает.
источник

▲R

▲ Max Rovensky in Next.js — русскоговорящее сообщество
Margarita
Почему
import { useRouter } from 'next/router';
const router = useRouter();
router.push('/shops/details/123', '/shops/details/123', { shallow: true });
Вызывает перезагрузку страницы и как этого избежать? прошлась по сообщениям чата, вроде так у всех работает.
Первый арг - href, второй as
источник

▲R

▲ Max Rovensky in Next.js — русскоговорящее сообщество
Они почти никогда не совпадают
источник

▲R

▲ Max Rovensky in Next.js — русскоговорящее сообщество
Скорее всего должно быть /shops/details?something=123
источник

M

Margarita in Next.js — русскоговорящее сообщество
▲ Max Rovensky
Скорее всего должно быть /shops/details?something=123
т.е если у меня путь pages/shops/details/[shopName].js, то ?shopName=123?
источник

M

Margarita in Next.js — русскоговорящее сообщество
в href
источник

▲R

▲ Max Rovensky in Next.js — русскоговорящее сообщество
Так точно
источник

M

Margarita in Next.js — русскоговорящее сообщество
Router.push('/shops/details/?shopName=123', '/shops/details/123', { shallow: true }); не сработало
источник

▲R

▲ Max Rovensky in Next.js — русскоговорящее сообщество
🤔
источник

▲R

▲ Max Rovensky in Next.js — русскоговорящее сообщество
/shops/details?shopName=123
источник

▲R

▲ Max Rovensky in Next.js — русскоговорящее сообщество
Если так сработает - то это баг в Next
источник

M

Margarita in Next.js — русскоговорящее сообщество
тоже нет, редирект происходит, но с перезагрузкой
источник

▲R

▲ Max Rovensky in Next.js — русскоговорящее сообщество
Ща проверю
источник

▲R

▲ Max Rovensky in Next.js — русскоговорящее сообщество
Отдельный вопрос, почему необходимость в router.push вместо <Link/>?
источник

M

Margarita in Next.js — русскоговорящее сообщество
▲ Max Rovensky
Отдельный вопрос, почему необходимость в router.push вместо <Link/>?
В принципе вполне возможно реализовать через Link, но у меня переход происходит в onChange селекта и всегда будет только на клиенте. Да и разобраться хочется, почему не работает
источник

▲R

▲ Max Rovensky in Next.js — русскоговорящее сообщество
Проверил у себя на аналогичном сетапе, все сработало 🤔
источник

M

Margarita in Next.js — русскоговорящее сообщество
▲ Max Rovensky
Проверил у себя на аналогичном сетапе, все сработало 🤔
Пишут еще, что такое поведение бывает, если происходит ошибка в
 getInitialProps
(там
 try catch 
и  catch сделает изменение
 window.location.href 
), но в консоль ничего не падает и вроде бы все ок.
Я бы увидела ошибку, если она есть ?
источник

▲R

▲ Max Rovensky in Next.js — русскоговорящее сообщество
shallow игнорирует getInitialProps
источник

▲R

▲ Max Rovensky in Next.js — русскоговорящее сообщество
Если кто столкнется в будущем, при параметризированном роутинге в href надо включать полный путь js файлу страницы, т.е. Router.push('/shops/details/[shopName]?shopName=123', '/shops/details/123', { shallow: true });
Либо делать в параметризированных страницах экспорт из другой страницы, т.е.

// pages/[teamSlug]/settings.js

import page from ‘../../team-settings.js’
export default page
источник