標籤:
Since react-router routes are components, creating nested routes is as simple as making one route a child of another in JSX.
Make the nested component:
class App extends React.Component { render(){ return( <Router history={hashHistory}> <Route path="/" component={Home}> <Route path="about" component={About}> <Route path="contact" component={Contact}></Route> </Route> </Route> </Router> ); }}
Change the path:
const Links = () => <nav > <Link activeStyle={{color: ‘green‘}} to="/">Home</Link> <Link activeStyle={{color: ‘green‘}} to="/about">About</Link> <Link activeClassName="active" to="/about/contact">Contact</Link> </nav>;
Pass the props.children to the nested component:
const Home = (props) => <div><h1>Home</h1><Links></Links>{props.children}</div>;const About = (props) => <div><h1>About</h1>{props.children}</div>;const Contact = () => <div><h1>Contact</h1></div>;
----------------
import React from ‘react‘;import {hashHistory, Route, Router, Link} from ‘react-router‘;// About is the child of home, to display the about, we need to access// props.childrenconst Home = (props) => <div><h1>Home</h1><Links></Links>{props.children}</div>;const About = (props) => <div><h1>About</h1>{props.children}</div>;const Contact = () => <div><h1>Contact</h1></div>;const Links = () => <nav > <Link activeStyle={{color: ‘green‘}} to="/">Home</Link> <Link activeStyle={{color: ‘green‘}} to="/about">About</Link> <Link activeClassName="active" to="/about/contact">Contact</Link> </nav>;class App extends React.Component { render(){ return( <Router history={hashHistory}> <Route path="/" component={Home}> <Route path="about" component={About}> <Route path="contact" component={Contact}></Route> </Route> </Route> </Router> ); }}export default App;
[React] React Router: Nested Routes