# Index Routes When we visit `/` in this app it's just our navigation and a blank page. We'd like to render a `Home` component there. Lets create a `Home` component and then talk about how to render it at `/`. ```js // modules/Home.js import React from 'react' export default React.createClass({ render() { return
Home
} }) ``` One option is to see if we have any children in `App`, and if not, render `Home`: ```js // App.js // ...
{/* ... */} {this.props.children || }
//... ``` This would work fine, but its likely we'll want `Home` to be attached to a route like `About` and `Repos` in the future. A few reasons include: 1. Participating in a data fetching abstraction that relies on matched routes and their components. 2. Participating in `onEnter` hooks 3. Participating in code-spliting Also, it just feels good to keep `App` decoupled from `Home` and let the route config decide what to render as the children. Remember, we want to build small apps inside small apps, not big ones! Lets add a new route to `index.js`. ```js // index.js // new imports: // add `IndexRoute` to 'react-router' imports import { Router, Route, hashHistory, IndexRoute } from 'react-router' // and the Home component import Home from './modules/Home' // ... render(( {/* add it here, as a child of `/` */} ), document.getElementById('app')) ``` Now open http://localhost:8080 and you'll see the new component is rendered. Notice how the `IndexRoute` has no path. It becomes `this.props.children` of the parent when no other child of the parent matches, or in other words, when the parent's route matches exactly. Index routes can twist people's brains up sometimes. Hopefully it will sink in with a bit more time. Just think about a web server that looks for `index.html` when you're at `/`. Same idea, React Router looks for an index route if a route's path matches exactly. --- [Next: Index Links](09-index-links.md)