Saya baru di Next.js dan saya bertanya-tanya bagaimana cara mengalihkan dari halaman awal ( / ) ke / hello-nextjs misalnya. Setelah pengguna memuat halaman dan setelah itu menentukan apakah path === / redirect ke / hello-nextjs
Di react-router kami melakukan sesuatu seperti:
<Switch>
<Route path="/hello-nextjs" exact component={HelloNextjs} />
<Redirect to="/hello-nextjs" /> // or <Route path="/" exact render={() => <Redirect to="/hello-nextjs" />} />
</Switch>
Jawaban:
Di
next.js
Anda dapat mengarahkan ulang setelah halaman dimuat menggunakanRouter
ex:Atau dengan Kait:
sumber
Ada tiga pendekatan.
1.Redirect pada acara atau fungsi:
2. Direct dengan kait:
3. Langsung dengan Tautan:
berdasarkan pada dokumen Nextjs,
<a>
tag tersebut diperlukan di dalam tautan untuk hal-hal seperti buka di tab baru!Ada beberapa opsi lain untuk perutean serveride yang
asPath
. dalam semua pendekatan yang dijelaskan Anda dapat menambahkan asPath untuk mengarahkan kembali sisi klien dan server.sumber
Jawaban @ Nico memecahkan masalah ketika Anda menggunakan kelas.
Jika Anda menggunakan fungsi, Anda tidak dapat menggunakan
componentDidMount
. Sebagai gantinya Anda dapat menggunakan React HooksuseEffect
.Pada 2019 Bereaksi memperkenalkan kait. yang jauh lebih cepat dan efisien daripada kelas.
sumber
<Switch>
yang Anda gunakanReact-router
. Bahkan<Switch>
tidak menyediakan kode status 303, 302.Contoh semi resmi
The
with-cookie-auth
contoh redirect digetInitialProps
. Saya tidak yakin apakah ini pola yang valid atau belum, tapi ini kodenya:Ini menangani sisi server dan sisi klien. Itu
fetch
panggilan adalah salah satu yang benar-benar mendapatkan token auth, Anda mungkin ingin merangkum ini menjadi fungsi yang terpisah.Apa yang saya sarankan sebagai gantinya
1. Redirect pada render sisi server (hindari flash selama SSR)Ini adalah kasus yang paling umum. Anda ingin mengarahkan pada titik ini untuk menghindari halaman awal berkedip saat memuat pertama.
2. Redirect di componentDidMount (berguna ketika SSR dinonaktifkan, misalnya dalam mode statis)Ini adalah fallback untuk rendering sisi klien.
Saya tidak bisa menghindari mem-flash halaman awal dalam mode statis menambahkan titik ini, karena Anda tidak dapat mengarahkan ulang selama pembuatan statis, tetapi tampaknya lebih baik daripada pendekatan yang biasa. Saya akan mencoba mengedit saat saya membuat kemajuan.
Contoh lengkap ada di sini
Masalah yang relevan, yang sayangnya berakhir dengan jawaban klien saja
sumber
redirect-to.ts
_app.tsx
sumber
getInitialProps
. @Afsanefda harus menjadi jawaban yang diterima. Dan juga Anda menggunakan next.js Anda tidak perlu bereaksi router untuk mengatur rute. Selanjutnya sudah menangani itu secara default.Router.push
harus pergi ke metode siklus hidup komponen sebagai gantinyaSaya telah menerapkan fungsi ini di
Next.JS
aplikasi saya dengan mendefinisikan halaman root ini apakah sisi server redirect dan sisi klien. Ini kode untuk halaman root:sumber