Terakhir diperbarui: 2024-03-13
Pada codelab ini Anda akan mempelajari tentang pembuatan routing dan navigasi untuk berpindah halaman menggunakan App Router di NextJs.
Sebelum memulai codelab ini, sebaiknya Anda memiliki pengetahuan dasar tentang:
Di React, anda dapat membuat Single Page Application (SPA) dengan memanfaatkan konsep routing. Routing di React dengan NextJS memanfaatkan susunan filesystem secara hierarkikal dalam folder app (App Router) untuk versi sebelumnya NextJS menggunakan folder pages (Page Router).
Singkatnya, Anda dapat membuat menu atau tautan di halaman web yang ketika diklik dapat memuat konten tanpa reload atau refresh halaman web. Jadi, seakan-akan kita berada di satu halaman web yang sama, karena itu disebut aplikasi satu halaman (Single Page Application / SPA). Untuk memahaminya lebih lanjut, silakan lakukan praktikum berikut ini.
Pada praktikum ini, Anda akan membuat 3 halaman yang di-handle oleh router, yaitu halaman home
, halaman about
dan halaman profile
. Silakan lakukan langkah-langkah praktikum berikut ini.
npm install
page.tsx
di dalam folder app, dan buatlah komponen dengan kode berikut.export default function Home() {
return <h1>Welcome to Home</h1> ;
}
npm run dev
di terminal VSCode. Dan silahkan buka browser pada alamat url http://localhost:3000layout.tsx
. File ini akan secara otomatis digenerate jika tidak ditemukan. Perhatikan susunan kode yang ada didalamnya. Anda akan menemukan susunan html
yang di dalamnya terdapat props
children. Props children akan di-replace oleh komponen sesuai dengan routing./about
dengan NextJS, silahkan buat folder /about
dalam /app
dan buat file dengan nama page.tsx
. Kemudian buat function komponen seperti pada kode berikut./images
di project anda.export default function About() {
return <h1>Welcome to About</h1> ;
}
Anda dapat membuat routing bersarang, maksudnya ketika suatu link diklik di dalam link tersebut terdapat daftar link atau menu yang dapat diklik juga. Jadi, dalam praktikum ini akan dibuat susunan URL atau link seperti berikut:
Link utama | Link bersarang |
| |
| |
|
|
|
|
Untuk memahaminya, silakan lakukan langkah-langkah praktikum berikut ini:
/blogs/first
dan /blogs/second
. Kemudian tambahkan masing-masing untuk setiap folder dengan file page.tsx
./blogs/page.tsx
buatlah function component seperti kode berikut atau anda dapat mengkreasikan tampilan dengan selera anda!export default function Blog() {
return (
<h1>Blog</h1>
);
}
/blogs/first/page.tsx
buatlah function component seperti berikut:export default function FirstBlog() {
return (
<h1>First Blog</h1>
);
}
/blogs
dan /blogs/first
pada browser anda.Anda dapat membuat routing secara dinamis, maksudnya ketika suatu link diakses akan ditambahkan dengan suatu url path yang nilainya dapat berubah secara dinamis. Jadi, dalam praktikum ini akan dibuat susunan URL atau link seperti berikut:
Link utama | Link dinamis |
|
|
|
|
|
|
Untuk memahaminya, silakan lakukan langkah-langkah praktikum berikut ini:
/products/page.tsx
yang berisi function component untuk menampilkan list dari products seperti kode berikut.export default function ProductList() {
return (
<div>
<h1>Product List</h1>
<h2>Product 1</h2>
<h2>Product 2</h2>
<h2>Product 3</h2>
</div>
);
}
[ ]
. Sebagai contoh: [productId]
menandakan bahwa path dinamis menggunakan variabel productId
(Catatan: Anda boleh menuliskan hanya dengan [id]
, tetapi untuk mempermudah pembacaan konteks sebaiknya jangan gunakan hanya id
).page.tsx
pada lokasi /app/products/[productId]
dan tambahkan kode sebagai berikut.type Props = {
params: {
productId: string
}
}
export default function ProductDetails({ params }: Props) {
return (
<h1>Details about product {params.productId}</h1>
)
}
params.productId
. Pemanggilan atribut params
, disesuaikan dengan pendefinisian nama path
./products
dan /products/1
pada browser anda. Ubah nilai productId
dengan nilai lainnya.Pada Praktikum sebelumnya Anda telah berhasil membuat routing, tetapi belum dapat menampilkan link navigasi di dalam Project. Untuk melakukan navigasi, anda dapat menggunakan Link komponen yang disediakan oleh library NextJs.
Untuk memahaminya, silakan lakukan langkah-langkah praktikum berikut ini:
/app/page.tsx
tambahkan import Link komponen seperti kode berikut.import Link from "next/link";
/profile
dan /about
export default function Home() {
return (
<div>
<h1>Welcome to Home</h1>
<Link href='/profile'>Profile</Link>
<Link href='/about'>About</Link>
</div>
);
}
Selamat, Anda telah berhasil menyelesaikan codelab ini. Semoga mendapat ilmu yang bermanfaat.
Silakan cek beberapa sumber belajar lainnya...