2016-05-20 3 views
4

Я привык к макетам приложений с несколькими областями ввода, т. Е. Для области содержимого и заголовка верхнего бара. Я бы хотел добиться чего-то подобного в React Router. Например:Render multiple components in React Router

<Router> 
    <Route path="/" component = { AppLayout }> 
    <Route path="list" 
      component = { ListView } 
      topBarComponent = { ListTopBar }/> 
    </Route> 
</Router> 

AppLayout:

<div className="appLayout box"> 
    <div className="appLayout topBar"> 
    { -- display ListTopBar here -- } 
    </div> 
    <div className="appLayout content"> 
    { -- display ListView here -- } 
    </div>  
</div> 

Оба дочерних компоненты должны получать тот же реквизит.

Как я могу подойти к этому?

ответ

5

Чтобы PASSE несколько компонент, вы можете сделать так:

<Route path="groups" components={{main: Groups, sidebar: GroupsSidebar}} /> 
<Route path="users" components={{main: Users, sidebar: UsersSidebar}}> 

ВИДЕТЬ документ здесь: https://github.com/ReactTraining/react-router/blob/v3/docs/API.md#named-components

+1

Ссылка не работает. Это должно быть: https://github.com/ReactTraining/react-router/blob/v3/docs/API.md#named-components –

+0

Спасибо, что я обновил ответ :) – Crema

1

В v4, согласно docs, вы можете сделать несколько компонентов, как это:

<Route to='/some-path' render={props => 
    <div> 
    <FirstChild /> 
    <SecondChild /> 
    </div> 
} />