• react-router 4 路由的嵌套


    1.在component组件内部需要嵌套的位置直接嵌套Route标签

    这个方法会使得路由标签比较分散,子组件我们必须直接将Route标签写入到父组件之中,而且路由必须包含根路径.

    // Dashboard.jsx 
    import Menu from '~/components/Menu/Menu';
    import React from 'react';
    import {Route,Switch} from "react-router-dom";
    import Index from '~/container/Index/Index';
    import TaskList from '~/container/TaskManage/TaskList/TaskList'
    
    const routes = [
        {
            path: "/Dashboard/Index",
            component: Index
        },
        {
            path: "/Dashboard/TaskManage/TaskList",
            component: TaskList
        }
    ];
    
    class Dashboard extends React.Component{
        constructor(props, context ) {
            super(props, context );
        }
    
        render(){
            return(
                <div>
                    <Menu/>
                    <div className='container'>
                        <div>
                           {routes.map((route, index) => (
                                <Route
                                    exact
                                    key={index}
                                    path={route.path}
                                    component={route.component}
                                />
                            ))}
                        </div>
                    </div>
                </div>
            )
        }
    }
    export default Dashboard
    

    2.使用Route render渲染作内联嵌套

    component使用this.props.children进行嵌套渲染,Dashboard为父组件,Index和TaskList为子组件

    // router.js
    <Router history={history}>
                    <Switch>
                        <Route exact path="/" component={Login}/>
                        <Route path="/" render={({history,location,match}) => (
                            <Dashboard history={history} location={location} match={location}>
                                <Route path="/Dashboard/Index" component={Index}></Route>
                                <Route path="/Dashboard/TaskManage/TaskManageIng" component={TaskManageIng}></Route>
                                <Route path="/Dashboard/TaskManage/TaskList" component={TaskList}></Route>
                                <Route path="/Dashboard/TaskManage/TaskResource" component={TaskResource}></Route>
                            </Dashboard>
                        )} />
                    </Switch>
                </Router>
    // Dashboard.jsx 
    import Menu from '~/components/Menu/Menu';
    import React from 'react';
    
    class Dashboard extends React.Component{
        constructor(props, context ) {
            super(props, context );
        }
    
        render(){
            return(
                <div>
                    <Menu/>
                    <div className='container'>
                        <div>
                           {this.props.children}
                        </div>
                    </div>
                </div>
            )
        }
    }
    export default Dashboard
    
  • 相关阅读:
    转载 Android Permission中英对照
    常用vi命令——鸟哥的私房菜
    转载 Android拍照、录像、录音代码范例
    转载 Android ListView滚动提示等待框
    Android ViewFlipper装载baseAdapter
    转载 Android解决java.lang.OutOfMemoryError: bitmap size exceeds VM budget
    转载 Android解决通过Intent调用系统拍照程序,返回图片太小的问题
    垂直输出字符串数组
    Yahoo!网站性能最佳体验的34条黄金守则__JavaScript和CSS
    将16进制转换成10进制
  • 原文地址:https://www.cnblogs.com/heihei-haha/p/9504737.html
Copyright © 2020-2023  润新知