Routing Basic

Secara bawaan, React Router punya sistem routing yang sentris, jadi lo bisa bikin routing di satu file routes.ts yang ada di folder app. Kalo lo buka file tersebut, lo bakal nemu satu route bawaan yang jadi halaman utama bawaan React Router:

app/routes.ts

Kalo lo mau bikin route baru, tinggal tambahin aja di array tersebut. Misal, lo mau bikin route /about, lo bisa tambahin kayak gini:

app/routes.ts

Fungsi route butuh dua parameter: path dan file module-nya yang bakal di-render ketika route tersebut match atau diakses.

Isi dari file route module-nya itu React component yang diekspor secara default. Contohnya kayak gini:

app/routes/about.tsx

Kalo lo liat lagi file routes.ts, di sana lo notice ada index dan route. index itu buat route yang jadi halaman utama dari parent route-nya, sedangkan route itu buat route biasa. Secara teknis kalo lo ganti index ke route, itu juga bakal jalan, tapi secara semantik lebih baik pake index kalo itu halaman utama dari parent route-nya.

Setiap file yang lo referensiin di routes.ts itu disebut route module. Route module ini bisa punya beberapa fungsi yang bisa lo export, kayak loader, action, dan meta. Kalo liat lagi kode di atas, file routes/home.tsx dan routes/about.tsx itu adalah route module.

Path import route module ini relatif ke file routes.ts, ini berarti dia mulai dari folder app. Jadi, ketika lo nulis routes/home.tsx, itu berarti lo ngimpor file home.tsx yang ada di dalam folder app/routes.

Di mana lo mau naruh route module itu terserah lo, karena nggak ada convention khusus buat itu. Cuman, biasanya orang naruh di folder routes atau pages biar gampang dicari dan lebih terstruktur.

Kayak gini nggak masalah:

app/routes.ts

Kalo kayak gini lo nggak perlu lagi bikin struktur folder yang dalem-dalem buat ngikutin struktur path-nya. Hal ini juga yang ngatasin masalah pribadi gue, dan akhirnya gue bisa bikin struktur folder yang sedangkal mungkin.


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