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
posted @   黑黑哈哈  阅读(3760)  评论(0编辑  收藏  举报
编辑推荐:
· 10年+ .NET Coder 心语,封装的思维:从隐藏、稳定开始理解其本质意义
· .NET Core 中如何实现缓存的预热?
· 从 HTTP 原因短语缺失研究 HTTP/2 和 HTTP/3 的设计差异
· AI与.NET技术实操系列:向量存储与相似性搜索在 .NET 中的实现
· 基于Microsoft.Extensions.AI核心库实现RAG应用
阅读排行:
· 10年+ .NET Coder 心语 ── 封装的思维:从隐藏、稳定开始理解其本质意义
· 地球OL攻略 —— 某应届生求职总结
· 提示词工程——AI应用必不可少的技术
· Open-Sora 2.0 重磅开源!
· 周边上新:园子的第一款马克杯温暖上架
点击右上角即可分享
微信分享提示