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 exact
param datang ke dalam bermain ketika Anda memiliki beberapa jalur yang memiliki nama yang mirip:
Misalnya, bayangkan kami memiliki Users
komponen yang menampilkan daftar pengguna. Kami juga memiliki CreateUser
komponen yang digunakan untuk membuat pengguna. Url untuk CreateUsers
harus 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/users
router akan melalui semua rute yang kita tentukan dan mengembalikan kecocokan PERTAMA yang ditemukannya. Jadi dalam hal ini, ia akan menemukan Users
rute 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 /users
sebagian cocok /users/create
, sehingga akan mengembalikan Users
rute yang salah!
The exact
param 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 exact
kita Users
sehingga hanya akan cocok dengan /users
:
<Switch>
<Route exact path="/users" component={Users} />
<Route path="/users/create" component={CreateUser} />
</Switch>
Dokumen menjelaskan exact
secara rinci dan memberikan contoh lain.
exact
harus menjadi standar dalam pendapat saya
/admin//users
di komponen Admin, dan /admin/users/create
di komponen Root ??? Saat ini saya mengalami situasi ini dan exact
solusi tipikal tidak bekerja dengan baik.
Singkatnya, jika Anda memiliki beberapa rute yang ditentukan untuk perutean aplikasi Anda, ditutup dengan Switch
komponen 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 exact
kata kunci ke Rute yang jalurnya juga disertakan oleh jalur Rute lain. Misalnya jalur home /
disertakan dalam semua jalur sehingga perlu memiliki exact
kata kunci untuk membedakannya dari jalur lain yang dimulai dengan /
. Alasannya juga mirip dengan /functions
jalan. Jika Anda ingin menggunakan jalur rute lain seperti /functions-detail
atau /functions/open-door
yang termasuk /functions
di dalamnya maka Anda perlu menggunakan exact
untuk /functions
rute 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.pathname
persis.
**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>
exact
atribut / 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.