Router React'te DefaultRoute başka bir Rotaya nasıl ayarlanır

Bende aşağıdakiler var:

  
    
      
      
      
    
    
  

DefaultRoute kullanılırken, herhangi bir * Dashboard'un Dashboard içinde oluşturulması gerektiğinden SearchDashboard hatalı işler.

DefaultRoute'umun "app" Rotası'ndaki Rotaya "searchDashboard" u göstermesini istiyorum. Bu React Router ile yapabileceğim bir şey mi, yoksa bunun için normal Javascript kullanmalı mıyım (sayfa yönlendirmesi için)?

Basically, if the user goes to the home page I want to send them instead to the search dashboard. So I guess I'm looking for a React Router feature equivalent to window.location.replace("mygreathostname.com/#/dashboards/searchDashboard");

41
@ JonatanLundqvistMedén aradığım şey buydu, teşekkür ederim! Cevap olarak yazın, doğru olarak işaretleyeceğim. Gecikmeli cevap için özür dilerim.
katma yazar Matthew Herbst, kaynak
DefaultRoute yerine Redirect kullanmayı denediniz mi?
katma yazar Jonatan Lundqvist Medén, kaynak

8 cevap

DefaultRoute yerine Redirect kullanabilirsiniz.


56
katma
@Kulbear Aynı problemi yaşadım. Ogglas'ın cevabında söylediklerini yapmak işe yaradı.
katma yazar Alan P., kaynak
Sadece ben miyim, yoksa doğrudan derin bir URL'ye erişmek için kullanırken, vurmaya çalıştığım rota yerine her zaman "to" url'ye yönlendirilirim?
katma yazar Pablote, kaynak
- = '/ a' - = '/ a /: id' gibi bazı yönlendirme yapıyorsanız, reaksiyon-yönlendiriciden ve bileşeninizi ekleyin. Ayrıntılar için bkz.
katma yazar Kulbear, kaynak

Yanlış bir şekilde varsayılan bir yol oluşturmaya çalışıyordum:



But this creates two different paths that render the same component. Not only is this pointless, but it can cause glitches in your UI, i.e., when you are styling <link/> elements based on this.history.isActive().

The right way to create a default route (that is not the index route) is to use :



Bu tepki yönlendirici 1.0.0 dayanmaktadır. https://github.com/rackt/react-router/blob/master/modules adresine bakın. /IndexRedirect.js .

34
katma
Ben de bunu yapıyorum, ancak örneğin .’ye yönlendirmek zorunda kalmak yerine / adresindeki bir bileşene (ana sayfam) hizmet veren bir çözümü çok isterim. /ev .
katma yazar ericsoco, kaynak
katma yazar ericsoco, kaynak
IndexRoute tarafından zaten işlenmiş bir şeye Rotası almanın amacı nedir?
katma yazar Matthew Herbst, kaynak
Hiçbir anlamı yok ve cevabımı, savunuculuk yapmadığımı açıkça belirtmek için düzenledim.
katma yazar Seth, kaynak
Teşekkürler, bu çözüm v1.0.0'da iyi çalışıyor
katma yazar Stijn de Witt, kaynak

The problem with using is if you have a different URL, say /indexDashboard and the user hits refresh or gets a URL sent to them, the user will be redirected to /searchDashboard anyway.

Siteyi yenilemek veya URL'ler göndermek için kullanıcıların kullanamıyorsanız, şunu kullanın:

 (
    
)}/>

searchDashboard giriş bilgilerinin arkasındaysa bunu kullanın:

 (
  loggedIn ? (
    
  ) : (
    
  )
)}/>
21
katma
IMHO kabul edilen cevap bu olmalıdır.
katma yazar Dynalon, kaynak

Jonathan'ın cevabı benim için işe yaramadı. Reac v0.14.0 ve React Router v1.0.0-rc3 kullanıyorum. Bu yaptı:

.

Bu yüzden Matthew'in Davasında, istediğine inanıyorum:

.

Source: https://github.com/rackt/react-router/blob/master/docs/guides/advanced/ComponentLifecycle.md

9
katma
Payınız için teşekkürler. Bunun için React v0.13 ve React-Router versiyonlarını kullanıyordum, bu yüzden 1.0 öncesi/rc versiyonunu kullandım. Umarım bu başkalarına yardımcı olur!
katma yazar Matthew Herbst, kaynak
Bunun bağlamı kaybettiğini düşünüyorum. SearchDashboard , ana sayfaya ulaştığınızda göreceğiniz bileşen olacaktır, ancak doğrudan /dashboard/searchDashboard öğesine giderseniz, onu tamamlayan Dashboard bileşeni olmaz . React-router, URL ile eşleşen rotaları temel alarak, yuvalanmış bileşenlerin hiyerarşisini dinamik olarak oluşturur, bu nedenle burada gerçekten bir yönlendirmeye ihtiyacınız olduğunu düşünüyorum.
katma yazar Stijn de Witt, kaynak

2017'ye gelenler için bu IndexRedirect ile yeni çözüm:


  
  
  

2
katma
 
    
      
      
      
    
    
  
1
katma
react-router v4 içindeki DefaultRoute eşdeğeri nedir?
katma yazar Anthony Kong, kaynak
@AnthonyKong Ben öyle olduğunu düşünüyorum: . reacttraining.com/react-router/web/example/basic
katma yazar TYMG, kaynak

Tercih edilen yöntem, reaksiyon yönlendiriciyi IndexRoutes bileşen

Bunu böyle kullanıyorsunuz (yukarıda bağlanmış olan tepki yönlendirici dokümanlardan alınmış):


    
    
    

1
katma

Benzer bir sorunla karşılaştım; Rota işleyicisinin hiçbiri eşleşmediyse varsayılan bir rota işleyicisi istemiştim.

Çözümlerim, yol değeri olarak bir joker karakter kullanmaktır. yani Ayrıca rota tanımınızdaki en son giriş olduğundan emin olun.


    
    
    
    

0
katma