zoukankan      html  css  js  c++  java
  • React 路由模块化,分离,嵌套传值

    模块化

    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 News from './components/News';
    
    import './assets/css/index.css';
    
    let routes = [
      {
        path: "/",
        component: Home,
        exact:true
      },
      {
        path: "/shop",
        component: Shop
      },
      {
        path: "/user",
        component: User
      },
      {
        path: "/news",
        component: News
      }
    ];
    
    
    
    class App extends Component {
    
      render() {
        return (
    
          <Router>
            <div>
                <header className="title">
    
                    <Link to="/">首页组件</Link>
                    <Link to="/user">用户页面</Link>
                    <Link to="/shop">商户</Link>
                    <Link to="/news">新闻</Link>
                </header> 
    
                {
                  routes.map((route,key)=>{
    
                      if(route.exact){
    
                        return <Route key={key} exact path={route.path} component={route.component}/>
                      }else{
                        return <Route  key={key}  path={route.path} component={route.component}/>
    
                      }
                  })
                }            
              
             
            </div>
          </Router>
        );
      }
    }
    
    export default App;

    分离

    import Home from '../components/Home';
    import User from '../components/User';
    import Shop from '../components/Shop';
    import News from '../components/News';
    
    
    let routes = [
        {
          path: "/",
          component: Home,
          exact:true
        },
        {
          path: "/shop",
          component: Shop
        },
        {
          path: "/user",
          component: User
        },
        {
          path: "/news",
          component: News
        }
    ];
    
    export default routes;
    import React, { Component } from 'react';
    
    import { BrowserRouter as Router, Route, Link } from "react-router-dom";
    
    
    
    import './assets/css/index.css';
    
    import routes from './model/router.js';
    
    class App extends Component {
    
      render() {
        return (
    
          <Router>
            <div>
                <header className="title">
    
                    <Link to="/">首页组件</Link>
                    <Link to="/user">用户页面</Link>
                    <Link to="/shop">商户</Link>
                    <Link to="/news">新闻</Link>
                </header> 
    
                {
                  routes.map((route,key)=>{
    
                      if(route.exact){
    
                        return <Route key={key} exact path={route.path} component={route.component}/>
                      }else{
                        return <Route  key={key}  path={route.path} component={route.component}/>
    
                      }
                  })
                }            
              
             
            </div>
          </Router>
        );
      }
    }
    
    export default App;

    嵌套传值

    import Home from '../components/Home';
    import User from '../components/User';
        import UserList from '../components/User/UserList';
        import UserAdd from '../components/User/UserAdd';
        import UserEdit from '../components/User/UserEdit';
    import Shop from '../components/Shop';
    import News from '../components/News';
    
    
    let routes = [
        {
          path: "/",
          component: Home,
          exact:true
        },
        {
          path: "/shop",
          component: Shop
        },
        {
          path: "/user",
          component: User,  
          routes:[   /*嵌套路由*/
            {
              path: "/user/",
              component: UserList
            },
            {
              path: "/user/add",
              component: UserAdd
            },
            {
              path: "/user/edit",
              component: UserEdit
            }
          ]
        },
        {
          path: "/news",
          component: News
        }
    ];
    
    export default routes;
    import React, { Component } from 'react';
    
    import { BrowserRouter as Router, Route, Link } from "react-router-dom";
    
    import './assets/css/index.css';
    
    import routes from './model/router.js';
    
    class App extends Component {
    
      render() {
        return (
    
          <Router>
            <div>
                <header className="title">
    
                    <Link to="/">首页组件</Link>
                    <Link to="/user">用户页面</Link>
                    <Link to="/shop">商户</Link>
                    <Link to="/news">新闻</Link>
                </header> 
    
    
                {
                  routes.map((route,key)=>{
    
                      if(route.exact){
    
                        return <Route key={key} exact path={route.path}                     
    
                        // route.component     value.component   <User  {...props}  routes={route.routes} />
    
                        render={props => (
                          // pass the sub-routes down to keep nesting
                          <route.component {...props} routes={route.routes} />
                        )}
    
                        />
                      }else{
                        return <Route  key={key}  path={route.path} 
                        render={props => (
                          // pass the sub-routes down to keep nesting
                          <route.component {...props} routes={route.routes} />
                        )}
                        />
    
                      }
                  })
                }            
              
             
            </div>
          </Router>
        );
      }
    }
    
    export default App;
    import React, { Component } from 'react';
    
    import { BrowserRouter as Router, Route, Link } from "react-router-dom";
    
    class User extends Component {
        constructor(props) {
            super(props);
            this.state = { 
                msg:'我是一个User组件'
             };
        }
        componentWillMount(){
    
            console.log(this.props.routes);
        }
        render() {
            return (
                <div className="user">               
                   
                   <div className="content">
    
    
                        <div className="left">
    
                            <Link to="/user/">用户列表</Link>
    
                            <br />
                            <br />
    
                            <Link to="/user/add">增加用户</Link>
    
    
                             <br />
                            <br />
    
                            <Link to="/user/edit">编辑用户</Link>
    
    
                        </div>
    
                        <div className="right">
    
    
                                {
    
                                    this.props.routes.map((route,key)=>{
    
                                         return   <Route key={key} exact path={route.path} component={route.component} />
                                    })
                                }
    
                                {/* <Route  path="/user/add" component={UserAdd} /> */}
    
                        </div>
    
    
                        </div>
    
    
                </div>
            );
        }
    }
    
    export default User;
  • 相关阅读:
    【leetcode】106. Construct Binary Tree from Inorder and Postorder Traversal
    【leetcode】105. Construct Binary Tree from Preorder and Inorder Traversal
    【leetcode】236. Lowest Common Ancestor of a Binary Tree
    【leetcode】235. Lowest Common Ancestor of a Binary Search Tree
    【leetcode】352. Data Stream as Disjoint Intervals
    【leetcode】897. Increasing Order Search Tree
    【leetcode】900. RLE Iterator
    BEC listen and translation exercise 26
    BEC listen and translation exercise 25
    BEC listen and translation exercise 24
  • 原文地址:https://www.cnblogs.com/loaderman/p/11557637.html
Copyright © 2011-2022 走看看