Elimde şunlar var:
<Route name="app" path="/" handler={App}>
<Route name="dashboards" path="dashboards" handler={Dashboard}>
<Route name="exploreDashboard" path="exploreDashboard" handler={ExploreDashboard} />
<Route name="searchDashboard" path="searchDashboard" handler={SearchDashboard} />
<DefaultRoute handler={DashboardExplain} />
</Route>
<DefaultRoute handler={SearchDashboard} />
</Route>
DefaultRoute kullanıldığında, herhangi bir *Dashboard'un Dashboard içinde işlenmesi gerektiğinden SearchDashboard yanlış işlenir.
app" Rotası içindeki DefaultRoute'umun "searchDashboard" Rotasına işaret etmesini istiyorum. Bu React Router ile yapabileceğim bir şey mi yoksa bunun için normal Javascript (sayfa yönlendirmesi için) mi kullanmalıyım?
Temel olarak, eğer kullanıcı ana sayfaya giderse, onu arama panosuna göndermek istiyorum. Yani sanırım window.location.replace("mygreathostname.com/#/dashboards/searchDashboard");
ile eşdeğer bir React Router özelliği arıyorum.
DefaultRoute yerine Redirect kullanabilirsiniz
<Redirect from="/" to="searchDashboard" />
Güncelleme 2019-08-09 yenileme sorununu önlemek için bunun yerine bunu kullanın, Ogglas'a teşekkürler
<Redirect exact from="/" to="searchDashboard" />
ile yanlışlıkla varsayılan bir yol oluşturmaya çalışıyordum:
<IndexRoute component={DefaultComponent} />
<Route path="/default-path" component={DefaultComponent} />
Ancak bu, aynı bileşeni işleyen iki farklı yol oluşturur. Bu sadece anlamsız olmakla kalmaz, aynı zamanda kullanıcı arayüzünüzde hatalara da neden olabilir, örneğin <Link/>
öğelerini this.history.isActive()
öğesine göre şekillendirirken.
Varsayılan bir rota (dizin rotası olmayan) oluşturmanın doğru yolu <IndexRedirect/>
kullanmaktır:
<IndexRedirect to="/default-path" />
<Route path="/default-path" component={DefaultComponent} />
Bu, react-router 1.0.0'ı temel alır. https://github.com/rackt/react-router/blob/master/modules/IndexRedirect.js adresine bakın.
Jonathan'ın cevabı benim için işe yaramadı. React v0.14.0 ve React Router v1.0.0-rc3 kullanıyorum. Bu işe yaradı:
<IndexRoute component={Home}/>
.
Matthew'un durumunda, sanırım o da bunu isterdi:
<IndexRoute component={SearchDashboard}/>
.
Kaynak: https://github.com/rackt/react-router/blob/master/docs/guides/advanced/ComponentLifecycle.md