№. Что находится внутри вашего компонента App
, не всегда отображается, пока вы не определили как корневой компонент внутри вашей конфигурации маршрутов.
например
<Router history={browserHistory}>
<Route path="/" component={App}>
<Route path="about" component={About}/>
<Route path="users" component={Users}>
<Route path="/user/:userId" component={User}/>
</Route>
<Route path="*" component={NoMatch}/>
</Route>
</Router>
В коде выше определение
<Route path="/" component={App}>
вызывает App
компонент, который будет отображаться первым и все другие путями маршрута являются детьми App
компонента.
Так что для второй части вашего вопроса - «маршрутов определить, что для отображения внутри приложения как часть своих детей, является то, что правильно»
Да, вы правы - Но чтобы отобразить другие компоненты, как дети корневого компонента, вы должны отметить, что в визуализации метод корневого компонента через
{this.props.children}
например
const App = React.createClass({
render() {
return (
<div>
<h1>App</h1>
<ul>
<li><Link to="/about">About</Link></li>
<li><Link to="/users">users</Link></li>
</ul>
{this.props.children}
</div>
)
}
})
Итак, теперь вы говорите, что, когда URL-адрес /
отображает мой корневой компонент i.e App
, и если маршрут /about
или /users
отображает дочерние компоненты App
i.e About
или Users
.
Ваш корневой компонент App
похож на шаблон, в котором вы показываете заголовок, панель навигации, нижний колонтитул как статический контент. Но часть тела, где вы говорите
{this.props.children}
меняется, поскольку ваш маршрут изменяется вместе с вашими компонентами.
И вы также могли бы использовать компоненты внутри определений маршрутов? – Mahoni
Также, если у вас нет этого всеобъемлющего кадра приложения Header, Footer и т. Д., Но ваш основной контент находится между ними, и вы хотите регулярно его манипулировать. Что это делает с этой концепцией? – Mahoni
@Mahoni Это зависит от вас, если вы хотите предоставить любой заголовок, нижний колонтитул или нет. Вы можете манипулировать основным компонентом в любое время. Я просто привел вам шаблон в качестве примера. – WitVault