美文网首页
react嵌套路由

react嵌套路由

作者: 木易先生灬 | 来源:发表于2018-12-20 00:37 被阅读0次
import React from "react";
import { BrowserRouter as Router, Route, Link } from "react-router-dom";
import Test from './Test'

function MainRouter() {
  return (
    <Router>
      <div>
        <ul>
          <li>
            <Link to="/">Home</Link>
          </li>
          <li>
            <Link to="/about">About</Link>
          </li>
          <li>
            <Link to="/topics">Topics</Link>
          </li>
        </ul>

        <hr />

        <Route exact path="/" component={Home} />
        <Route path="/about" component={About} />
        <Route path="/topics" component={Topics} />
      </div>
    </Router>
  );
}

function Home() {
  return (
    <div>
      <h2>Home</h2>
    </div>
  );
}

function About() {
  return (
    <div>
      <h2>About</h2>
    </div>
  );
}

function Topics({ match }) {
  return (
    <div>
      <h2>Topics</h2>
      <ul>
        <li>
          <Link to={`${match.url}/rendering`}>Rendering with React</Link>
        </li>
        <li>
          <Link to={`${match.url}/components`}>Components</Link>
        </li>
        <li>
          <Link to={`${match.url}/props-v-state`}>Props v. State</Link>
        </li>
        <li>
          <Link to={`${match.url}/test`}>测试路由</Link>
        </li>
      </ul>

      <Route path={`${match.path}/:url`} component={Topic} />
      <Route
        exact
        path={match.path}
        render={() => <h3>Please select a topic.</h3>}
      />
    </div>
  );
}

function Topic({ match }) {
    console.log(match.params.url)
    switch(match.params.url){
        case 'test':
            return (<Test></Test>)
        default :
        return (
            <div>
                <h3>{match.params.url}</h3>
            </div>
         );    
    }
  
}

export default MainRouter;

相关文章

网友评论

      本文标题:react嵌套路由

      本文链接:https://www.haomeiwen.com/subject/llkekqtx.html