我是React開發新手,我不確定如何處理此問題。React-router - 加載時重定向?
我有一個航線簡單的應用程序,它看起來像這樣:
<Router>
<div>
<Route path="/" component={MainComponent} />
<Route path="/dashboard" component={DashboardComponent} />
<Route path="/users" component={UsersComponent} />
<Route path="/admin" component={AdminComponent} />
</div>
</Router>
當我去爲localhost:3000 /對myApp/index.html的我MainComponent
如預期的載荷,它擁有該網站的主要佈局,導航等等。
然後,我要點擊「控制面板」,切換到DashboardComponent
,「用戶」移動到UsersComponent
和「管理」加載AdminComponent
,這些都是裝旁邊的導航從MainComponent
。
所以它是這樣的:
localhost:3000/myApp = MainComponent
localhost:3000/dashboard = MainComponent + DashboardComponent
localhost:3000/users = MainComponent + UsersComponent
localhost:3000/admin = MainComponent + AdminComponent
我想實現的是從來沒有加載MainComponent
單獨(因爲它擁有什麼除外導航),但負載DashboardComponent它,所以一切都將與之前的工作稍微改變:
localhost:3000/myApp = MainComponent + DashboardComponent
所以我想我想加載我的MainComponent,然後儀表板在初始化。如果URL自動從index.html更改爲/儀表板,它會非常好。
我試圖做這樣的事情在我MainComponent.jsx:
componentWillMount() {
<Redirect to="/dashboard" />
console.log("It works!");
}
但它什麼都不做,我覺得路由器從第一個例子中Application.jsx只是覆蓋它。
我想我可能做錯了什麼,因爲我覺得它是路由器最基本的東西之一,但我找不到任何答案和任何文檔中的任何幫助我的地方。任何提示?
tl; dr我想要localhost:3000/myApp/index.html
重定向我localhost:3000/dashboard
當應用程序啓動(我認爲它應該足以讓路由器加載什麼正確的組件)。
重新路由什麼也不做(沒有錯誤,但路線是不會改變):
<Router>
<div>
<Route path="/" component={MainComponent} />
<Route path="/dashboard" component={DashboardComponent} />
<Route path="/users" component={UsersComponent} />
<Route path="/admin" component={AdminComponent} />
<Route exact path="/" component={() => <Redirect to={DashboardComponent} /> } />
</div>
</Router>
有什麼不好'<路由路徑= 「/」 成分= {DashboardComponent} />'? – Daniel
我假設你正在使用react-router v.4 我相信你可以創建一個呈現重定向組件的路由。 ' } />' –
MEnf
@daniel它將只加載沒有MainComponent的DashboardComponent,所有其他組件也將加載如果我理解了正確的路由,則使用DashboardComponent而不是MainComponent。 – Wordpressor