一、安装
npm i react-router-dom react-router-config –save
二、导入
import { BrowserRouter, Route, Link,Switch,NavLink } from 'react-router-dom';
import {renderRoutes} from 'react-router-config';
三、新建JS文件
home.js
import React from 'react';
export default function Home(){
return (
<div>
<h1>这是主页</h1>
<a href="/about">去about</a>
<a href="/discover">去discover</a>
</div>
)
}
about.js
import React from 'react';
import {Link} from 'react-router-dom';
import {renderRoutes} from 'react-router-config';
//变量的导出用export,而不是export default
export const About = (props)=>{
const route = props.route
return (
<div>
<h1>这是关于</h1>
<a href="/">去home</a>
<a href="/discover">去discover</a>
<Link to="/about/my">关于我的</Link>
<br />
<Link to="/about/you">关于你的</Link>
{/*使用renderRoutes方法继续渲染子路由,第二个参数可以进行传参*/}
{renderRoutes(route.childrens,{user:'hello'})}
</div>
)
}
discover.js
import React from 'react';
import {Link} from 'react-router-dom';
import {renderRoutes} from 'react-router-config';
export default function Discover(props){
const route = props.route
return (
<div>
<h1>这是发现</h1>
<a href="/">去home</a><br />
<a href="/about">去about</a><br />
<Link to="/discover/earth">发现地球</Link>
<br />
<Link to="/discover/star">发现星星</Link>
{renderRoutes(route.childrens)}
</div>
)
}
之后,新建JS子文件my.js you.js star.js earth.js(略)
四、配置router.js
在src目录下新建文件夹(此处为route),然后在该目录下新建route.js文件,在route.js里进行文件的配置如下:
import Home from '../component/home'
import {About} from '../component/about'
import Discover from '../component/discover'
import Earth from '../component/earth'
import Star from '../component/star'
import My from '../component/my'
import You from '../component/you'
const routes = [
{
path:'/',
component: Home,
exact:true
},
{
path:'/about',
component: About,
childrens:[
{
path:'/about/my',
component:My
},
{
path:'/about/you',
component:You
}
]
},
{
path:'/discover',
component: Discover,
childrens:[
{
path:'/discover/earth',
component:Earth
},
{
path:'/discover/star',
component:Star
}
]
}
]
export {routes}
————————————————
五、在index.js中渲染路由
import React from 'react';
import ReactDOM from 'react-dom';
import * as serviceWorker from './serviceWorker';
import { BrowserRouter} from "react-router-dom";
import { renderRoutes } from "react-router-config";
import './index.css';
import {routes} from './router/route';
使用renderRoutes方法渲染路由:
ReactDOM.render(<BrowserRouter>
{ renderRoutes(routes) }
</BrowserRouter>, document.getElementById('root'));
serviceWorker.unregister();
reference:https://blog.csdn.net/lijianxian199799/article/details/100762036
---END---