Birisi arasındaki farkı açıklayabilir mi?
<Route exact path="/" component={Home} />
ve
<Route path="/" component={Home} />
'Kesin' kelimesinin anlamını bilmiyorum
Birisi arasındaki farkı açıklayabilir mi?
<Route exact path="/" component={Home} />
ve
<Route path="/" component={Home} />
'Kesin' kelimesinin anlamını bilmiyorum
Yanıtlar:
Bu örnekte gerçekten hiçbir şey yok. exact
Param benzer adlara sahip birden çok yol olduğunda devreye giriyor:
Örneğin, Users
bir kullanıcı listesi gösteren bir bileşenimiz olduğunu varsayalım. Ayrıca CreateUser
kullanıcı oluşturmak için kullanılan bir bileşenimiz var. URL'si CreateUsers
altında yuvalanmalıdır Users
. Yani kurulumumuz şöyle görünebilir:
<Switch>
<Route path="/users" component={Users} />
<Route path="/users/create" component={CreateUser} />
</Switch>
Şimdi buradaki sorun http://app.com/users
, yönlendiriciye gittiğimizde tüm tanımlı rotalarımızdan geçecek ve bulduğu İLK eşleşmeye dönecektir. Yani bu durumda, önce Users
rotayı bulur ve sonra geri döner. Hepsi iyi.
Ancak, gidersek http://app.com/users/create
yine tüm tanımlı rotalarımızdan geçer ve bulduğu İLK eşleşmeye döner. React yönlendiricisi kısmi eşleştirme yapar, bu nedenle /users
kısmen eşleşir /users/create
, bu nedenle yanlış bir şekilde Users
rotayı yeniden döndürür !
exact
Param bir güzergah için kısmi eşleştirme devre dışı bırakır ve emin yolu geçerli url, TAM eşleme ise sadece rotayı döndüren yapar.
Yani bu durumda, biz eklemek gerekir exact
bizim için Users
sadece üzerine uyacak şekilde rota /users
:
<Switch>
<Route exact path="/users" component={Users} />
<Route path="/users/create" component={CreateUser} />
</Switch>
Dokümanlar exact
ayrıntılı olarak açıklar ve başka örnekler verir.
exact
bence varsayılan olmalı
/admin//users
Yönetici bileşeninde ve /admin/users/create
Kök bileşeninde yaparsak ne olur ??? Şu anda bu durumdayım ve tipik exact
çözüm düzgün çalışmıyor.
Kısacası, uygulamanızın rotası için tanımlanmış birden fazla rotanız varsa, Switch
bunun gibi bileşenlerle birlikte ;
<Switch>
<Route exact path="/" component={Home} />
<Route path="/detail" component={Detail} />
<Route exact path="/functions" component={Functions} />
<Route path="/functions/:functionName" component={FunctionDetails} />
</Switch>
Daha sonra exact
, yolunun başka bir Rotanın yolu tarafından da dahil edildiği Rotaya anahtar kelime koymanız gerekir . Örneğin, ev yolu /
tüm yollara dahil edildiğinden, exact
onu ile başlayan diğer yollardan ayırmak için anahtar sözcüğe sahip olması gerekir /
. Nedeni de /functions
yola benzer . Gibi başka bir rota yolunu kullanmak isterseniz /functions-detail
ya /functions/open-door
içeren /functions
İçinde ardından kullanmak gerekir exact
için /functions
rota.
/motor
ve /motorbike
sonra exact
patika ile rotaya koymanız gerekiyor /motor
. Aksi takdirde, hem /motor
ve /motorbike
yolları yolu ile bileşenini pick up /motor
.
Buraya bir göz atın: https://reacttraining.com/react-router/core/api/Route/exact-bool
kesin: bool
Doğru olduğunda, yalnızca yol location.pathname
tam olarak eşleşirse eşleşir .
**path** **location.pathname** **exact** **matches?**
/one /one/two true no
/one /one/two false yes
En kısa cevap
Lütfen bunu deneyin.
<switch>
<Route exact path="/" component={Home} />
<Route path="/about" component={About} />
<Route path="/shop" component={Shop} />
</switch>
exact
özniteliğin / pervanenin anlamını açıklamak için hiçbir şey yapmaz ve bu nedenle kesinlikle bir "cevap" değildir. OP'nin gerçekten sahip olduğundan emin olmadığınız bir soruna çözüm sunmaktansa, gerçekten sorulan soruyu ele almaya çalışmalısınız.