# Nested Routes The navigation we added to `App` should probably be present on every screen. Without React Router, we could wrap that `ul` into a component, say `Nav`, and render a `Nav` on every one of our screens. This approach isn't as clean as the application grows. React Router provides another way to share UI like this with nested routes, a trick it learned from [Ember](http://emberjs.com) (/me tips hat). ## Nested UI and Nested URLs Have you ever noticed your app is just a series of boxes inside boxes inside boxes? Have you also noticed your URLs tend to be coupled to that nesting? For example given this url, `/repos/123`, our components would probably look like this: ```js {/* / */} {/* /repos */} {/* /repos/123 */} ``` And our UI something like: ``` +-------------------------------------+ | Home Repos About | <- App +------+------------------------------+ | | | Repos -> | repo | Repo 1 | | | | | repo | Boxes inside boxes | | | inside boxes ... | <- Repo | repo | | | | | | repo | | | | | +------+------------------------------+ ``` React Router embraces this by letting you nest your routes, which automatically becomes nested UI. ## Sharing Our Navigation Lets nest our `About` and `Repos` components inside of `App` so that we can share the navigation with all screens in the app. We do it in two steps: First, let the `App` `Route` have children, and move the other routes underneath it. ```js // index.js // ... render(( {/* make them children of `App` */} ), document.getElementById('app')) ``` Next, render children inside of `App`. ```js // modules/App.js // ... render() { return (

Ghettohub Issues

{/* add this */} {this.props.children}
) } // ... ``` Alright, now go click the links and notice that the `App` component continues to render while the child route's component gets swapped around as `this.props.children` :) React Router is constructing your UI like this: ```js // at /about // at /repos ``` ## By Small and Simple Things are Great Things Brought to Pass The best way to build large things is to stitch small things together. This is the real power of React Router, every route can be developed (even rendered!) as an independent application. Your route configuration stitches all these apps together however you'd like. Applications inside of Applications, boxes inside of boxes. What happens if you move the `About` route outside of `App`? Okay, now put it back. --- [Next: Active Links](05-active-links.md)