Я новичок в Next.js и мне интересно, как, например, перенаправить со стартовой страницы ( / ) в / hello-nextjs . После того, как пользователь загрузит страницу и после этого определит, будет ли путь === / перенаправить на / hello-nextjs
В реакции-роутере мы делаем что-то вроде:
<Switch>
<Route path="/hello-nextjs" exact component={HelloNextjs} />
<Redirect to="/hello-nextjs" /> // or <Route path="/" exact render={() => <Redirect to="/hello-nextjs" />} />
</Switch>
Ответы:
В то
next.js
вы можете перенаправить после загрузки страницы , используяRouter
пример:Или с крючками:
источник
Есть три подхода.
1. Перенаправить на события или функции:
2. Переадресация с крючками:
3. Переадресация с помощью ссылки:
на основе документации Nextjs
<a>
тег необходим внутри ссылки для таких вещей, как открытие в новой вкладке!Есть несколько других вариантов маршрутизации на стороне сервера
asPath
. во всех описанных подходах вы можете добавить asPath для перенаправления как на стороне клиента, так и на стороне сервера.источник
Ответ @ Нико решает проблему, когда вы используете классы.
Если вы используете функцию, вы не можете использовать
componentDidMount
. Вместо этого вы можете использовать React HooksuseEffect
.В 2019 году React представила крючки. которые намного быстрее и эффективнее, чем классы.
источник
<Switch>
который вы используете вReact-router
. Даже<Switch>
не предоставляет 303, 302 кода состояния. Просто перенаправляетПолуофициальный пример
Эти
with-cookie-auth
примеры перенаправления вgetInitialProps
. Я не уверен, является ли это действительным шаблоном или нет, но вот код:Он обрабатывает как на стороне сервера, так и на стороне клиента.
fetch
Вызов является тот , который на самом деле получить маркер аутентификации, вы можете инкапсулировать это в отдельную функцию.Что бы я посоветовал вместо
1. Перенаправление при рендеринге на стороне сервера (избегайте прошивки во время SSR)Это самый распространенный случай. Вы хотите перенаправить на этом этапе, чтобы избежать мигания начальной страницы при первой загрузке.
2. Перенаправление в componentDidMount (полезно, когда SSR отключен, например, в статическом режиме)Это запасной вариант для рендеринга на стороне клиента.
Я не мог избежать перепрошивки начальной страницы в статическом режиме, добавив этот пункт, потому что вы не можете перенаправить во время статической сборки, но это кажется лучше, чем обычные подходы. Я постараюсь редактировать, как я делаю успехи.
Полный пример здесь
Актуальная проблема, которая, к сожалению, заканчивается только ответом клиента
источник
redirect-to.ts
_app.tsx
источник
getInitialProps
. @Afsanefda должен быть принятым ответом. А также вы используете next.js, вам не нужен реагирующий маршрутизатор для организации маршрутов. Next уже обрабатывает это по умолчанию.Router.push
вместо этого следует перейти к методам жизненного цикла компонентаЯ реализовал эту функцию в своем
Next.JS
приложении, определив корневую страницу, которая выполняет перенаправление на стороне сервера и на стороне клиента. Вот код для корневой страницы:источник