router路由配置

路由

1.路由概念:随着浏览器地址发生改变,展示给用户不同的视图页面

2.模式:Hash模式 histo模式

3.使用场景:多页面的切换

4.插件:react-router-dom

5.react-router-dom路由的内置组件

NavLink 导航组件 自带active高亮 to={路由路径}

Link 导航组件 to= {路由路径}

Route 路由视图组件 path={路由路径} component={路由视图组件} router={函数}

Redirect 路由重定向组件 to={路由路径}

Switch 避免路由重复匹配组件

BrowserRouter 路由根组件

路由插件流程

1.下载 npm install react-router-dom -D

2.在src目录下新建router/config.js router/RouterView.js

config.js


import 路由视图组件 from '路径'

const routers=[

	{
	        path:'重定向路径',
	         component:路由视图组件,
	},
	{
	        path:'一级路由路径',
	        component:路由视图组件,
	        children:[
	                {
	                        path:'二级路由路径',
	                        component:路由视图组件
	                }
	        ]
	}
]

//抛出
exprot default routers
//RouterView.js

import React from 'react';//引入react组件

import {Route,Switch,Redirect} from 'react-router-dom'//引入react-router-dom组件

export default function RouterView(props) {

    let coms=props.routes.filter(item=>item.component)//筛选出路由视图组件

    let red=props.routes.filter(item=>item.redirect)//筛选路由重定向组件

    return (
        <Switch className="rout">
         {
             coms.map((item,index) =>{

                 return <Route key={index} path={item.path} render={()=>{
                     if(item.children){
                         return <item.component routes={item.children} />//递归调用
                     }
                     else{
                         return <item.component/>
                     }
                 }}></Route>
             })
         } ,
         {
             red.map((item,index) =>{
                 return <Redirect to={item.redirect} key={index}/>
             })
         }  
        </Switch>
    );
}

一级路由

import React, { Component } from 'react';
// 引入路由组件
import {BrowserRouter} from 'react-router-dom'
// 引入加载路由视图的函数组件
import RouterView from './route/RouterView'
// 引入路由配置表
import config from './route/config'

export default class App extends Component {
  render() {
    return (
      <div>
         <BrowserRouter>
            {/* 展示一级路由页面 */}
            <RouterView routes={config}/>
         </BrowserRouter>
      </div>
    );
  }
}

二级路由

import React, { Component } from 'react';
import { NavLink } from 'react-router-dom';
import RouterView from '../route/RouterView'
 {/* 二级视图组件 */}
 <RouterView routes={this.props.routes} />
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值