NavLink使用说明
NavLink可以实现路由链接的高亮,通过activeClassName指定样式名
标签体内容是一特个殊的标签属性
通过this.props.children可以获取标签体内容
代码示例
import React, { Component } from 'react'
import { NavLink, Route} from 'react-router-dom'
import Home from './pages/Home' //Home是路由组件
import About from './pages/About' // About是路由组件
import Header from './components/Header' // Header是一般组件
export default class App extends Component {
render() {
return (
<div>
<div className="row">
<div className="col-xs-offset-2 col-xs-8">
<Header/>
</div>
</div>
<div className="row">
<div className="col-xs-2 col-xs-offset-2">
<div className="list-group">
{/* 在原生html中,靠a标签实现页面的跳转 */}
{/* <a className="list-group-item active" href="./about.html">About</a>
<a className="list-group-item" href="./home.html">Home</a> */}
{/* 在React中靠路由链接切换组件 */}
< NavLink activeClassName="xiaojian" className="list-group-item" to="/about">About</ NavLink>
< NavLink activeClassName="xiaojian" className="list-group-item" to="/home">Home</ NavLink>
</div>
</div>
<div className="col-xs-6">
<div className="panel">
<div className="panel-body">
{/* 注册路由 */}
<Route path= "/about" component={About}/>
<Route path="/home" component={Home}/>
</div>
</div>
</div>
</div>
</div>
)
}
}
NavLink封装
为什么要对NavLink进行封装?
导航栏有多个导航项需要进行路由跳转的时候就需要写到多个如下的代码,会造成代码冗余,
所以对NavLink组件进行封装
< NavLink activeClassName="xiaojian" className="list-group-item" to="/xxx">xxx</ NavLink>
封装NavLink
import React, { Component } from 'react'
import { NavLink } from 'react-router-dom'
export default class MyNavLink extends Component {
render() {
return (
< NavLink activeClassName="qianfeng" className="list-group-item" {...this.props} />
)
}
}
使用封装后的NavLink
import React, { Component } from 'react'
import { Route} from 'react-router-dom'
import Home from './pages/Home' //Home是路由组件
import About from './pages/About' // About是路由组件
import Header from './components/Header' // Header是一般组件
import MyNavLink from './components/MyNavLink'
export default class App extends Component {
render() {
return (
<div>
<div className="row">
<div className="col-xs-offset-2 col-xs-8">
<Header/>
</div>
</div>
<div className="row">
<div className="col-xs-2 col-xs-offset-2">
<div className="list-group">
{/* 在原生html中,靠a标签实现页面的跳转 */}
{/* <a className="list-group-item active" href="./about.html">About</a>
<a className="list-group-item" href="./home.html">Home</a> */}
{/* 在React中靠路由链接切换组件 */}
<MyNavLink to="/about" title="About" >About</MyNavLink>
<MyNavLink to="/home" title="Home" >Home</MyNavLink>
</div>
</div>
<div className="col-xs-6">
<div className="panel">
<div className="panel-body">
{/* 注册路由 */}
<Route path= "/about" component={About}/>
<Route path="/home" component={Home}/>
</div>
</div>
</div>
</div>
</div>
)
}
}