2016-11-11 31 views
19

üç farklı rotalar için aynı bileşeni kullanıyorum tepki:Birden çok yol adı Router

<Router> 
    <Route path="/home" component={Home} /> 
    <Route path="/users" component={Home} /> 
    <Route path="/widgets" component={Home} /> 
</Router> 

birleştirmek için yine de var mı, olmak nasıl:

<Router> 
    <Route path=["/home", "/users", "/widgets"] component={Home} /> 
</Router> 

cevap

26

I Maalesef bunun olduğunu düşünmeyin. Gerçi başka JSX bileşeni ile yapacağı gibi

Bir map kullanabilirsiniz:

<Router> 
    {["/home", "/users", "/widgets"].map(path => 
     <Route path={path} component={Home} /> 
    )} 
</Router> 
2

olarak başına dize türünde olduğu Yönlendirici docs PropType 'yol' Tepki .bu yüzden geçebileceği bir yolu yoktur Rota Bileşenine bir sahne olarak bir dizi. Niyetiniz tek değişiklik yoluna ise bir şeyler yapmak, böylece

Eğer bir düzenli ifade dize olabilir En az path v4 tepki-router ile o

19

farklı rota hiçbir sorunları aynı bileşenini kullanabilirsiniz böyle: Eğer component/route böyle basitse muhtemelen değmez yüzden biraz ayrıntılı var gördüğünüz gibi

<Router> 
    <Route path="/(home|users|widgets)/" component={Home} /> 
</Router> 

.

Ve elbette bu gerçekten sık sık ortaya çıkarsa, her zaman reereks veya .map mantığını yeniden kullanan bir dizi paths parametresini alan bir sarma bileşeni oluşturabilirdiniz.

+1

Harika bir fikir @Cameron. Gruplardan biriyle başlayan yolları eşleştirmek için biraz değişiklik yapmanın faydalı olduğunu buldum: '/^\/(home | users | widgets) /' Now, '/ widgets' eşleşecektir, ancak '/ dashboard/widgets 'eşleşmeyecek. – Towler

+3

Mükemmel olmalı, ancak şu anda tip regex, prop-type validasyonunda geçerli değil: 'Uyarı: Failed prop type: 'Route' türünde' regexp 'türünde geçersiz prop 'path' bekleniyor, beklenen' string'.' –

+0

@ FábioPaiva evet hala rotada keyfi bir normal ifadenin nasıl yerleştirileceğini anlayamadım – Atav32

İlgili konular