1+ import _ from 'lodash'
12import React , { PropTypes , Component } from 'react'
2- import { NavLink as RNavLink } from 'react-router-dom'
3+ import { NavLink as RNavLink , matchPath } from 'react-router-dom'
34
45class NavLink extends Component {
56 constructor ( props ) {
@@ -8,8 +9,16 @@ class NavLink extends Component {
89
910 render ( ) {
1011 const { to, content, target } = this . props
12+ const { router } = this . context
1113 let classes = this . props . classes
1214 const attrs = { to }
15+ if ( to && router ) {
16+ const pathname = _ . get ( router , 'route.location.pathname' , '' )
17+ const active = matchPath ( pathname , { path : to } ) !== null
18+ if ( active ) {
19+ classes += ' selected'
20+ }
21+ }
1322 if ( target || target !== '_self' ) {
1423 attrs . target = target
1524 if ( attrs . target === '_blank' ) {
@@ -18,17 +27,21 @@ class NavLink extends Component {
1827 }
1928 return (
2029 < li className = { classes } >
21- < RNavLink activeClassName = "selected " { ...attrs } > { content } </ RNavLink >
30+ < RNavLink activeClassName = "active " { ...attrs } > { content } </ RNavLink >
2231 </ li >
2332 )
2433 }
2534}
2635
36+ NavLink . contextTypes = {
37+ router : PropTypes . object
38+ }
39+
2740NavLink . propTypes = {
2841 to : PropTypes . string . isRequired ,
2942 target : PropTypes . string ,
3043 content : PropTypes . string . isRequired ,
3144 classes : PropTypes . string . isRequired
3245}
3346
34- export default NavLink
47+ export default NavLink
0 commit comments