React Router'da DefaultRoute başka bir Route'a nasıl ayarlanır

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.

Çözüm

DefaultRoute yerine Redirect kullanabilirsiniz

Güncelleme 2019-08-09 yenileme sorununu önlemek için bunun yerine bunu kullanın, Ogglas'a teşekkürler

Yorumlar (5)

ile yanlışlıkla varsayılan bir yol oluşturmaya çalışıyordum:


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 `öğelerinithis.history.isActive()` öğesine göre şekillendirirken.

Varsayılan bir rota (dizin rotası olmayan) oluşturmanın doğru yolu `` kullanmaktır:


Bu, react-router 1.0.0'ı temel alır. https://github.com/rackt/react-router/blob/master/modules/IndexRedirect.js adresine bakın.

Yorumlar (5)

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ı:

``.

Matthew'un durumunda, sanırım o da bunu isterdi:

``.

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

Yorumlar (2)