一安装
当项目创建好之后
安装react-router react-router-dom react-router-native
cnpm i react-router-dom react-router-native --save
后面两个对第一有依赖,所以只用安装后面两个即可,会自动安装第一个依赖
二 导入
每一个需要使用路由的组件,都应该根据需求进行导入
function App() {
return (
<div className="App">
<BrowserRouter> //整个项目的路由都应该在这个标签内部
<Top></Top>
<div className='left'>
<ul>
<li>
<NavLink exact to='/' activeClassName='test'>首页</NavLink>
</li>
//navlink标签,用来控制当前路由的改变和跳转,用户点击后就会触发路由的改变,
//to属性表示要跳转的目标路由,
//activeClassName属性表示 ,当路由被激活时的样式名称
//exact 当前路由是否与to属性的值完全匹配,如果完全匹配则激活该标签的activeClassName,如果没有该属性,则表示,只要当前路由部分字段能匹配上to属性的内容,就激活activeClassName
<li>
<NavLink to='/about' activeClassName='test'>关于</NavLink>
</li>
</ul>
</div>
<div className='content'>
<Route exact path='/' component={Index}></Route>
<Route path='/about' component={About}></Route>
//route标签用来存放路由被激活时,渲染组件的位置,相当于vue中的router-view标签
//component 用来存储该标签对应的组件,如果标签被激活,则展示component中的组件内容
//path属性,当前路由与path中的值是否匹配。如果匹配,激活标签,否则不激活标签
//exact 如果存在,则path中的值必须与当前路由完全匹配才能激活标签,不存在,只要当前路由有path中的值就激活标签
</div>
</BrowserRouter>
</div>
)
}
如果需要路由嵌套,只需要在本身是路由的子组件中继续完成上面的步骤就可以了,举个例子,在about组件中海油许多子组件路由
那就在about组件中完成以下代码
import React from 'react'
import {Router, Route, Link, BrowserRouter, NavLink} from 'react-router-dom'
import Company from './company.js'
import News from './news.js'
import Product from './product.js'
class About extends React.Component {
constructor () {
super()
this.state = {
work: '前端开发工程师'
}
}
render () {
return (<div>
<ul><li><NavLink exact activeClassName='test' to='/about'>关于公司</NavLink></li>
<li><NavLink exact activeClassName='test' to='/about/news'>关于新闻</NavLink></li>
<li><NavLink exact activeClassName='test' to='/about/product'>关于产品</NavLink></li>
</ul>
<Route exact path='/about' component={Company}></Route>
<Route exact path='/about/news' component={News}></Route>
<Route exact path='/about/product' component={Product}></Route>
</div>)
}
}
export default About