React-Router: Apa tujuan dari IndexRoute?

102

Saya tidak mengerti apa tujuan menggunakan IndexRoute dan IndexLink . Tampaknya dalam kasus apa pun kode di bawah ini akan memilih komponen Rumah terlebih dahulu kecuali jalur Tentang diaktifkan.

<Route path="/" component={App}>
  <IndexRoute component={Home}/>
  <Route path="about" component={About}/>
</Route>

vs.

<Route path="/" component={App}>
  <Route path="home" component={Home}/>
  <Route path="about" component={About}/>
</Route>

Apa keuntungan / tujuan kasus pertama di sini?

Nick Pineda
sumber
Mengapa Homedipilih dalam contoh pertama, kecuali jalurnya /home? Simak penjelasannya di dokumen: github.com/rackt/react-router/blob/master/docs/guides/basics/…
Michelle Tilley
Anda dapat membayangkan bahwa utama adalah bilah navigasi dan Beranda serta Tentang adalah laman utama yang dapat Anda klik di bilah navigasi.
Nick Pineda
2
Dalam contoh teratas, /akan merender Appdengan Homelulus sebagai anak. Dalam contoh bawah, akan /akan membuat Appdengan baik Home atau Aboutsedang diberikan, karena baik dari jalur mereka cocok.
Michelle Tilley
2
Ohh !!! Bisakah Anda menjelaskannya sebagai jawaban agar saya dapat memberikan pujian? Terima kasih!
Nick Pineda
3
Dalam perubahan dari v0.13 menjadi v1.0 mereka mengubah nama dari DefaultRoutemenjadi IndexRoute. Saya menemukan bahwa 'default' lebih menggambarkan tujuannya. github.com/rackt/react-router/blob/master/…
Clarkie

Jawaban:

101

Dalam contoh teratas, /akan merender Appdengan Homelulus sebagai anak. Dalam contoh bawah, pergi ke /akan merender Appdengan tidak Home juga Aboutsedang dirender, karena tidak ada jalur yang cocok.

Untuk versi React Router yang lebih lama, informasi lebih lanjut tersedia di halaman Index Routes dan Index Links versi terkait . Mulai versi 4.0, React Router tidak lagi menggunakan IndexRouteabstraksi untuk mencapai tujuan yang sama.

Michelle Tilley
sumber
3
Jadi, apa yang bisa kita gunakan untuk menggunakan fitur ini dalam praktiknya?
seasonqwe
1
Misalnya, kita dapat membuat satu kontainer induk, beberapa rute anak, dan menetapkan salah satu rute anak ini sebagai default (IndexRoute). Atau, jika kita tidak memerlukan rute anak default, dan perlu memberi petunjuk kepada pengguna bahwa dia harus memilih sesuatu (maka tidak ada IndexRoute)
Olga Gnatenko
1
@ AlexHopeO'Connor Terima kasih, saya telah memperbarui paruh kedua jawaban
Michelle Tilley
apa sebenarnya arti lulus sebagai seorang anak? memuat di latar belakang? bisa mengakses alat peraga? lain?
StLia