‹ Daftar slidePertemuan 7: Implementasi navigasi antarhalaman dan routing dalam aplikasi mobile
Program Studi Bisnis Digital • FEB UNDIP
Lab Pemrograman
Pertemuan 7 — Implementasi Navigasi Antarhalaman dan Routing dalam Aplikasi Mobile
Bagaimana pengguna berpindah dari satu layar ke layar lain dalam aplikasi mobile Anda — dan bagaimana data ikut berpindah bersamanya.
RPS minggu 7 · 2x50 menit
Tujuan Pembelajaran Hari Ini
Empat capaian yang harus Anda kuasai setelah pertemuan ini, sejalan dengan Sub-CPMK minggu 7.
Sub-CPMK 7.1
01
Menjelaskan konsep navigasi dan routing serta peran navigation stack dalam aplikasi mobile.
Sub-CPMK 7.2
02
Mempraktikkan pemasangan dan konfigurasi React Navigation beserta Stack Navigator.
Sub-CPMK 7.3
03
Menerapkan navigate(), goBack(), dan pengiriman params antar layar.
Sub-CPMK 7.4
04
Membedakan dan menyusun Tab Navigator, Drawer Navigator, dan navigator bersarang (nested).
Mengapa Ini Penting bagi Bisnis Digital?
Bayangkan Anda membangun aplikasi marketplace kecil untuk UMKM di Semarang. Pengguna perlu berpindah antar puluhan layar dengan mulus.
Masalah 1 — Alur tanpa arah. Tanpa sistem navigasi, Anda harus menampilkan-dan-menyembunyikan komponen secara manual untuk tiap layar — kode cepat berantakan dan sulit dirawat begitu aplikasi punya lebih dari 3 layar.
Masalah 2 — Data terputus. Saat pengguna men-tap produk "Kopi Robusta Muria" di daftar katalog, layar detail perlu tahu produk yang mana yang harus ditampilkan. Tanpa mekanisme kirim data antar layar, informasi ini hilang begitu berpindah halaman.
Bagian 1 dari 3
Konsep Navigasi & Stack Navigator
Bagaimana aplikasi mobile mengingat layar mana yang sedang dan pernah dibuka pengguna, lalu memasang navigator pertama Anda.
Apa Itu Navigasi dan Routing?
Navigasi adalah mekanisme aplikasi berpindah dari satu layar (screen) ke layar lain. Routing adalah aturan yang menentukan layar mana yang ditampilkan untuk suatu "rute" (route) tertentu.
Ketiganya berasal dari satu pustaka: React Navigation, standar navigasi paling umum dipakai di ekosistem React Native.
Memasang React Navigation ke Proyek Anda
Tiga langkah dasar sebelum navigasi bisa dipakai: pasang paket inti, pasang paket Stack Navigator, lalu bungkus aplikasi dengan NavigationContainer.
Pengguna membuka aplikasi Toko Anira, lalu tap tiga kali berturut-turut: Katalog → Detail Produk → Checkout. Setiap navigate() menambah 1 layar ke stack.
Langkah
Perhitungan
Ukuran Stack
Aplikasi dibuka, layar awal Home dimuat
stack = 0 + 1 (push Home)
1 layar
Tap produk → navigate('Katalog')
stack = 1 + 1 (push Katalog)
2 layar
Tap item → navigate('DetailProduk')
stack = 2 + 1 (push DetailProduk)
3 layar
Tap "Beli" → navigate('Checkout')
stack = 3 + 1 (push Checkout)
4 layar
SETELAH TEKAN TOMBOL KEMBALI
3 layar
4 − 1 (pop Checkout)
Stack tersisa: Home, Katalog, DetailProduk — pengguna kembali persis ke Detail Produk yang tadi dilihat, bukan ke Home.
Coba Sendiri: Simulasikan Push dan Pop Navigation Stack
Tekan tombol navigasi untuk push layar baru dan tombol kembali untuk pop, lalu amati susunan stack berubah.
Bagian 2 dari 3
Mengirim Data Antar Layar (Params)
Bagaimana informasi seperti ID produk ikut berpindah bersama pengguna, dari daftar katalog sampai ke layar detail.
Mengirim Data: navigate() dengan Params
Fungsi navigation.navigate() menerima argumen kedua berupa objek params — data apa pun yang ingin Anda kirim ke layar tujuan.
Params bersifat khusus per-layar — setiap kali Anda navigate ke DetailProduk dengan produk berbeda, route.params ikut berubah sesuai data terbaru.
Hitung dari Nol: Kedalaman Rute dari Deep Link
Aplikasi Toko Anira menerima tautan luar (deep link): tokoanira://kategori/12/produk/305. Setiap segmen menambah satu tingkat kedalaman rute.
Langkah
Perhitungan
Kedalaman
Segmen 1: kategori
depth = 0 + 1
1
Segmen 2 (param): 12
depth = 1 + 1
2
Segmen 3: produk
depth = 2 + 1
3
Segmen 4 (param): 305
depth = 3 + 1
4
HASIL PARSING route.params
4 tingkat
2 rute bersarang, 2 nilai param
{
kategoriId: 12,
produkId: 305
}
Kapan Memakai Tab vs Drawer Navigator?
Berbeda dengan Stack, Tab dan Drawer Navigator tidak menumpuk layar — keduanya menampilkan beberapa layar "utama" yang sejajar.
Aspek
Tab Navigator
Drawer Navigator
Posisi menu
Bawah layar (bottom tab)
Geser dari tepi samping
Jumlah item ideal
3–5 item (selalu terlihat)
5–10 item (tersembunyi)
Contoh nyata
Beranda, Katalog, Keranjang, Profil
Pengaturan, Bantuan, Tentang, Keluar
Cocok untuk
Fitur utama yang sering diakses
Fitur sekunder, jarang diakses
Bagian 3 dari 3
Navigator Bersarang & Praktik
Menggabungkan Stack, Tab, dan Drawer dalam satu aplikasi — struktur yang dipakai hampir semua aplikasi bisnis digital nyata.
Navigator Bersarang: Stack di Dalam Tab
Pola paling umum di aplikasi nyata: setiap tab menyimpan Stack Navigator-nya sendiri, sehingga bisa berpindah layar internal tanpa kehilangan menu tab.
Menu tab tetap terlihat, sementara di dalam tab "Katalog" pengguna bisa push-pop layar seperti biasa.
Konfigurasi Opsi Rute Dasar
Tiap Stack.Screen bisa diberi properti options untuk mengatur judul header, dan initialRouteName menentukan layar pembuka Navigator.
Perhatikan baris terakhir: judul header DetailProduk otomatis berubah sesuai route.params.nama — misalnya menjadi "Kopi Robusta Muria" saat produk itu dibuka.
Studi Kasus: Alur Navigasi Toko Anira
Merangkum semua konsep hari ini menjadi satu alur nyata: dari login sampai konfirmasi pembelian.
Setelah Login berhasil, layar Login diganti (bukan di-push) memakai navigation.replace('Beranda') — supaya tombol kembali tidak membawa pengguna ke Login lagi.
Kesalahan Umum yang Perlu Anda Hindari
1. Lupa daftarkan layar di Navigator. Memanggil navigate('DetailProduk') padahal Stack.Screen name="DetailProduk" belum ditulis — aplikasi akan error "screen not found".
2. Salah baca params karena typo nama key. Mengirim { idProduk: 305 } tapi membaca route.params.id_produk — hasilnya undefined, bukan error yang jelas.
3. Memakai navigate() padahal butuh replace(). Alur Login → Beranda memakai navigate biasa membuat tombol kembali membawa pengguna ke Login lagi, membingungkan pengguna.
Kebiasaan baik: beri nama layar dan key params secara konsisten (misalnya selalu camelCase), lalu uji tombol kembali di setiap alur baru yang Anda buat.
Latihan Kelas: Alur Navigasi Marketplace Mini
Kerjakan berpasangan (15 menit) di dalam proyek React Native Anda, lalu satu pasangan akan diminta mendemonstrasikan hasilnya.
Instruksi
Pasang @react-navigation/native dan native-stack, bungkus App.js dengan NavigationContainer
Buat 3 layar: Beranda, DetailProduk, Checkout, daftarkan sebagai Stack.Screen
Dari Beranda, kirim minimal 2 params (nama & harga produk) ke DetailProduk memakai navigate()
Tampilkan params tersebut memakai route.params di layar DetailProduk
Tantangan tambahan (opsional): Atur judul header layar DetailProduk agar otomatis menampilkan route.params.nama, seperti pada Slide 16 tadi.
Ringkasan & Pertemuan Berikutnya
Yang Sudah Anda Kuasai
Konsep navigation stack: push saat navigate, pop saat kembali
Memasang React Navigation dan membangun Stack Navigator
Mengirim & membaca data antar layar lewat params dan route.params
Navigator bersarang: Stack di dalam Tab, serta beda Tab vs Drawer
Pertemuan 8 — Perancangan dan Pengujian REST API. Setelah pengguna bisa berpindah antar layar dengan data yang tepat, minggu depan kita belajar bagaimana data itu diambil dari server lewat REST API, menggantikan data contoh yang selama ini kita tulis manual di dalam kode.