|
|
9 rokov pred | |
|---|---|---|
| .. | ||
| modules | 9 rokov pred | |
| README.md | 9 rokov pred | |
| index.css | 9 rokov pred | |
| index.html | 9 rokov pred | |
| index.js | 9 rokov pred | |
| package.json | 9 rokov pred | |
| webpack.config.js | 9 rokov pred | |
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 /.
// modules/Home.js
import React from 'react'
export default React.createClass({
render() {
return <div>Home</div>
}
})
One option is to see if we have any children in App, and if not,
render Home:
// App.js
// ...
<div>
{/* ... */}
{this.props.children || <Home/>}
</div>
//...
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:
onEnter hooksAlso, 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.
// 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((
<Router history={hashHistory}>
<Route path="/" component={App}>
{/* add it here, as a child of `/` */}
<IndexRoute component={Home}/>
<Route path="/repos" component={Repos}>
<Route path="/repos/:userName/:repoName" component={Repo}/>
</Route>
<Route path="/about" component={About}/>
</Route>
</Router>
), 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.