前提
- 了解react框架
- 熟悉jsx语法
- 有react-router-dom插件使用基础
react路由封装
在react项目下src目录下新建router文件夹,router文件目录下新建index.js和config.js
- router/config.js ----生成并抛出路由配置表
// 引入路由视图组件
import Index from '../views/Index'
import Movie from '../views/two/Movie'
import Place from '../views/two/Place'
import My from '../views/two/My'
// 路由配置表 数组
const routes=[
{
path:'/index',
component:Index,
children:[
{
path:'/index/movie',
component: Movie
},
{
path:'/index/place',
component: Place
},
{
path:'/index/my',
component: My
}
]
}
];
// 抛出路由配置表
export default routes;
- router/index.js 加载路由视图组件的函数组件
// 加载路由视图组件得函数组件 -加载条件-路由路径对应路由视图组件 一一对应得关系 --->获取路由配置表
import React from 'react';
// 引入路由内置组件
import {Route} from 'react-router-dom'
const RouterView=(props)=>{ // 函数组件得props属性
console.log(props.routes); // 获取路由配置表
// 一一对应关系 遍历
return props.routes.map((item,index)=>{
// 路由对象 加载路由视图组件
return <Route key={index} path={item.path} render={(routeProps)=>{ // routeProps 路由元信息
// 判断当前得路由对象是否存在子路由
if(item.children){ // 存在路由嵌套 递归函数
return <item.component {...routeProps} routes={item.children}/>
}else{ // 不存在路由嵌套
return <item.component {...routeProps}/>
}
}}/>
})
}
export default RouterView;
使用
// 根组件 App.js
import React, { Component } from 'react'
// 引入路由内置组件
import {BrowserRouter} from 'react-router-dom'
// 引入加载路由视图得函数组件
import RouterView from './router/index'
// 引入路由配置表
import config from './router/config'
export default class App extends Component {
render() {
return (
<div className='App'>
<BrowserRouter>
{/* 加载/展示路由视图组件 */}
<RouterView routes={config}/>
</BrowserRouter>
</div>
)
}
}
react路由封装核心-----组件传参/js逻辑/递归函数
**粗体** _斜体_ [链接](http://example.com) `代码` - 列表 > 引用
。你还可以使用@
来通知其他用户。