React路由嵌套

/*

  react路由的配置:
    1、找到官方文档 https://reacttraining.com/react-router/web/example/basic

    2、安装  cnpm install react-router-dom --save


    3、找到项目的根组件引入react-router-dom

       import { BrowserRouter as Router, Route, Link } from "react-router-dom";

    4、复制官网文档根组件里面的内容进行修改  (加载的组件要提前引入)


         <Router>

                <Link to="/">首页</Link>

                <Link to="/news">新闻</Link>

                <Link to="/product">商品</Link>


               <Route exact path="/" component={Home} />
               <Route path="/news" component={News} />    
               <Route path="/product" component={Product} />   
         </Router>


         exact表示严格匹配


react动态路由传值

      1、动态路由配置

          <Route path="/content/:aid" component={Content} />   

      2、对应的动态路由加载的组件里面获取传值

            this.props.match.params

      跳转:<Link to={`/content/${value.aid}`}>{value.title}</Link>

react get传值  

      1、获取 this.props.location.search
         
*/

import React, { Component } from 'react';

import { BrowserRouter as Router, Route, Link } from "react-router-dom";

import Home from './components/Home';

import User from './components/User';

import Shop from './components/Shop';

import './assets/css/index.css'

class App extends Component {

  render() {
    return (

      <Router>
        <div>


          <header className="title">

             <Link to="/">首页组件</Link>

             <Link to="/user">用户页面</Link>


               <Link to="/shop">商户</Link>

          </header>

             
           <Route exact path="/" component={Home} />
           <Route path="/user" component={User} />

           <Route path="/shop" component={Shop} />
        
        
         
        </div>
      </Router>
    );
  }
}

export default App;
import React, { Component } from 'react';
import { BrowserRouter as Router, Route, Link } from "react-router-dom";

import ShopAdd from './Shop/ShopAdd';
import ShopList from './Shop/ShopList';

class Shop extends Component {
    constructor(props) {
        super(props);
        this.state = { 
            msg:'我是一个商户组件'
         };
    }    
    render() {
        return (
            <div className="shop">
               <div className="content">


                <div className="left">

                    <Link to="/shop/">商户列表</Link>

                    <br />
                    <br />

                    <Link to="/shop/add">增加商户</Link>


                </div>

                <div className="right">

                        
                        <Route exact path={`${this.props.match.url}/`} component={ShopList} />

                        <Route  path={`${this.props.match.url}/add`} component={ShopAdd} />

                </div>


                </div>


            </div>
        );
    }
}

export default Shop;
import React, { Component } from 'react';

import { BrowserRouter as Router, Route, Link } from "react-router-dom";


import Info from './User/Info';
import Main from './User/Main';

class User extends Component {
    constructor(props) {
        super(props);
        this.state = { 
            msg:'我是一个User组件'
         };
    }    
    render() {
        return (
            <div className="user">
               

               <div className="content">


                   <div className="left">

                        <Link to="/user/">个人中心</Link>

                        <br />
                        <br />

                        <Link to="/user/info">用户信息</Link>


                    </div>

                    <div className="right">

                            
                            <Route exact path="/user/" component={Main} />

                            <Route  path="/user/info" component={Info} />

                    </div>


               </div>


            </div>
        );
    }
}

export default User;
原文地址:https://www.cnblogs.com/loaderman/p/11557432.html