封装路由

封装路由

import React, { Component } from 'react';
import {Switch, Route, Redirect} from 'react-router-dom';

class RouterView extends Component {
    render() {
        let {routes} = this.props;	//取到传进来的路由表
        let rdArr = routes.filter(item=> item.redirect);	//把所以路由重定向取出来
        let rdCom = rdArr.map((item,key)=><Redirect from={item.path} to={item.redirect} key={key} />);
        return (
            <Switch>
                {
                    routes.map((item,key)=> !item.redirect && <Route path={item.path} key={key} render={(props)=><item.component {...props} routes={item.children} />} />).concat(rdCom)
                }
            </Switch>
        );
    }
}
export default RouterView;

调用

import RouterView from './router/RouterView';	//封装的组件
import routes from './router/routerConfig';	//路由表

// 把路由表引进来传进去
<RouterView routes={routes.routes} />

路由表

routes: [
        {
            path: '/home',
            component: Home
        },
        {
            path: '/index',
            component: Index,
            children: [
                {
                    path: '/index/hot',
                    component: Hot
                },
                {
                    path: '/index/cold',
                    component: Cold
                },
                {
                    path: '/index',
                    redirect: '/index/hot'
                }
            ]
        },
        {
            path: '/',
            redirect: '/index'
        }
    ]
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值