Adakah yang bisa menjelaskan perbedaannya?
<Route exact path="/" component={Home} />
dan
<Route path="/" component={Home} />
Saya tidak tahu arti 'tepat'
Adakah yang bisa menjelaskan perbedaannya?
<Route exact path="/" component={Home} />
dan
<Route path="/" component={Home} />
Saya tidak tahu arti 'tepat'
Jawaban:
Dalam contoh ini, tidak ada yang benar-benar terjadi. The exactparam datang ke dalam bermain ketika Anda memiliki beberapa jalur yang memiliki nama yang mirip:
Misalnya, bayangkan kami memiliki Userskomponen yang menampilkan daftar pengguna. Kami juga memiliki CreateUserkomponen yang digunakan untuk membuat pengguna. Url untuk CreateUsersharus bersarang di bawah Users. Jadi pengaturan kami dapat terlihat seperti ini:
<Switch>
<Route path="/users" component={Users} />
<Route path="/users/create" component={CreateUser} />
</Switch>
Sekarang masalahnya di sini, ketika kita pergi ke http://app.com/usersrouter akan melalui semua rute yang kita tentukan dan mengembalikan kecocokan PERTAMA yang ditemukannya. Jadi dalam hal ini, ia akan menemukan Usersrute terlebih dahulu dan kemudian mengembalikannya. Semuanya bagus.
Tetapi, jika kita pergi ke http://app.com/users/create, itu akan kembali melalui semua rute yang kita tentukan dan mengembalikan kecocokan PERTAMA yang ditemukannya. Bereaksi router melakukan pencocokan sebagian, sehingga /userssebagian cocok /users/create, sehingga akan mengembalikan Usersrute yang salah!
The exactparam menonaktifkan pencocokan parsial untuk rute dan memastikan bahwa itu hanya mengembalikan rute jika jalan adalah pertandingan EXACT ke url saat ini.
Jadi dalam hal ini, kita harus menambahkan rute exactkita Userssehingga hanya akan cocok dengan /users:
<Switch>
<Route exact path="/users" component={Users} />
<Route path="/users/create" component={CreateUser} />
</Switch>
Dokumen menjelaskan exactsecara rinci dan memberikan contoh lain.
exactharus menjadi standar dalam pendapat saya
/admin//usersdi komponen Admin, dan /admin/users/createdi komponen Root ??? Saat ini saya mengalami situasi ini dan exactsolusi tipikal tidak bekerja dengan baik.
Singkatnya, jika Anda memiliki beberapa rute yang ditentukan untuk perutean aplikasi Anda, ditutup dengan Switchkomponen seperti ini;
<Switch>
<Route exact path="/" component={Home} />
<Route path="/detail" component={Detail} />
<Route exact path="/functions" component={Functions} />
<Route path="/functions/:functionName" component={FunctionDetails} />
</Switch>
Maka Anda harus memasukkan exactkata kunci ke Rute yang jalurnya juga disertakan oleh jalur Rute lain. Misalnya jalur home /disertakan dalam semua jalur sehingga perlu memiliki exactkata kunci untuk membedakannya dari jalur lain yang dimulai dengan /. Alasannya juga mirip dengan /functionsjalan. Jika Anda ingin menggunakan jalur rute lain seperti /functions-detailatau /functions/open-dooryang termasuk /functionsdi dalamnya maka Anda perlu menggunakan exactuntuk /functionsrute tersebut.
Lihatlah di sini: https://reacttraining.com/react-router/core/api/Route/exact-bool
tepat: bool
Ketika benar, hanya akan cocok jika jalurnya cocok dengan location.pathnamepersis.
**path** **location.pathname** **exact** **matches?**
/one /one/two true no
/one /one/two false yes
Jawaban terpendek adalah
Silakan coba ini.
<switch>
<Route exact path="/" component={Home} />
<Route path="/about" component={About} />
<Route path="/shop" component={Shop} />
</switch>
exactatribut / prop, dan dengan demikian jelas bukan "jawaban". Anda harus mencoba menjawab pertanyaan yang sebenarnya ditanyakan daripada memberikan solusi untuk masalah yang Anda tidak yakin dengan OP sebenarnya.