Routing Nested

Anggap halaman /about itu punya subhalaman /about/team. Lo bisa bikin route-nya kayak gini:

app/routes.ts

Kalo lo akses /about/team, lo bakal liat tampilan yang sama kayak /about. Ini karena route /about dianggap sebagai parent dari route /about/team. Untuk itu, lo perlu nge-render component <Outlet /> di dalam component /about supaya subhalaman tersebut bisa ditampilin.

app/routes/about.tsx

Secara teknis, route module /about/team ini dibungkus di dalam route module /about. Kayak gini kira-kira:

Struktur Route

Ini berarti route module /about juga bisa kita dijadikan sebagai layout untuk subhalaman /about/team dan subhalaman lainnya yang ada di bawahnya. Ini bermanfaat banget ketika lo mau bikin semacam sub-menu berupa sidebar atau tab yang ada di dalam halaman /about.

Ini juga berarti, dalam konteks ini, lo nggak perlu naruh konten halaman /about di dalam file routes/about.tsx. File tersebut bisa dijadiin sebagai layout aja, dan lo bisa bikin file baru yang khusus buat konten halaman /about di dalam file app/routes/about-index.tsx, misalnya.

Jadinya kayak gini:

app/routes.ts

Untuk isi file app/routes/about.tsx, lo bisa bikin kayak gini:

app/routes/about.tsx

Sedangkan untuk file app/routes/about-index.tsx, lo bisa bikin kayak gini:

app/routes/about-index.tsx

Dan untuk file app/routes/about-team.tsx, lo bisa bikin kayak gini:

app/routes/about-team.tsx

In case lo nggak mau bikin nested route dengan struktur kayak gini, lo bisa bikin pake cara yang lebih simpel:

app/routes.ts

Kalo kayak gini, file app/routes/about.tsx nggak perlu pake <Outlet /> lagi, karena nggak ada subhalaman yang di-render di dalamnya dan kedua route tersebut nggak punya parent-child relationship. That's perfectly fine kalo lo butuhnya kayak gini.

If it works, it works!


Kamu Menyelesaikan Pelajaran Ini

Login untuk menyimpan progres belajarmu.


Kamu stuck? Ajukan pertanyaan!

Kolom ini hanya untuk pertanyaan terkait masalah yang mungkin kamu temui, tidak untuk yang lain.

Login untuk berkomentar 🔒

Markdown