2017-08-03 150 views
0

我有我的路線設置如下(index.js):陣營路由器V4不渲染父組件

<BrowserRouter history={browserHistory}> 
    <Switch> 
     <Route exact path="/" component={RootContainer} /> 
     <Route exact path="/login" component={RedirectToApp(LoginPage)} /> 
     <Route exact path="/dashboard" component={RequiresAuth(AppContainer)} /> 
     <Route exact path="/dashboard/venues" component={VenuesPage} /> 
    </Switch> 
</BrowserRouter> 

在我AppContainer我有我的分量寫爲:

render() { 
    return (
     <div className='wrapper main-app-wrapper'> 
     <Header toggleSidebar={this.toggleSidebar}> 
      <AuthHeaderActions /> 
     </Header> 
     <div className='content-wrapper'> 
      {this.props.children} 
     </div> 
     <LeftMenu /> 
     <Footer /> 
     </div> 
    ); 
    } 

當我轉到路線/儀表板,頁眉,頁腳和左側菜單得到正確渲染。

但是當我點擊路線/儀表板/場地時,只會呈現VenuesPage內的內容。頁眉,頁腳和左側菜單沒有被渲染。遇到路由嵌套的問題。我正在使用react-router-dom-v4。

回答

1

您可以在組件中添加Routesreact-router v4

您可以將路線更改爲

index.js

<BrowserRouter history={browserHistory}> 
    <Switch> 
     <Route exact path="/" component={RootContainer} /> 
     <Route exact path="/login" component={RedirectToApp(LoginPage)} /> 
     <Route path="/dashboard" component={RequiresAuth(AppContainer)} /> 

    </Switch> 
</BrowserRouter> 

現在,你想要的VenuesPage要的孩子AppContainer。您可以將其添加到AppContainer組件中,如

render() { 
    return (
     <div className='wrapper main-app-wrapper'> 
     <Header toggleSidebar={this.toggleSidebar}> 
      <AuthHeaderActions /> 
     </Header> 
     <div className='content-wrapper'> 
      {this.props.children} 
      <Route exact path="/dashboard/venues" component={VenuesPage} /> 
     </div> 
     <LeftMenu /> 
     <Footer /> 
     </div> 
    ); 
    } 
+0

當我點擊路線/儀表板/場地時,這樣做會使我進入空白頁面。基本上,這條路線沒有找到。我是第四版新手,所以在這裏有點困惑。 –

+1

你確定你從/儀表板路線中刪除了確切的屬性嗎 –

+0

我的不好。這工作得很好。謝謝。 –

2

你需要把場館路線內儀表盤

<Route exact path="/dashboard" component={RequiresAuth(AppContainer)}> 
    <Route exact path="/venues" component={VenuesPage}/> 
</Route> 

編輯

NB!如評論(和其他答案)所述,這不再適用於V4。

+0

已經嘗試過。這樣做會導致此錯誤:警告:您不應該在同一路由中使用; <路線兒童>將被忽略。孩子的路線不在這裏工作。 –

+1

對於反應路由器v4並不完全正確。然而,它將與v3或更早版本一起工作 –