I'm trying out React-Router (v4) and I'm having issues starting off the Nav to have one of the Link
's be active
. If I click on any of the Link
tags, then the active stuff starts working. However, I'd like for Home Link
to be active as soon as the app starts since that is the component that loads at the /
route. Is there any way to do this?
Here is my current code:
const Router = () => (
<BrowserRouter>
<div>
<Nav>
<Link activeClassName='is-active' to='/'>Home</Link> {/* I want this to start off as active */}
<Link activeClassName='is-active' to='/about'>About</Link>
</Nav>
<Match pattern='/' exactly component={Home} />
<Match pattern='/about' exactly component={About} />
<Miss component={NoMatch} />
</div>
</BrowserRouter>
)
This is an old, outdated answer for React Router v4
<Link>
no longer has the activeClassName
or activeStyle
properties. In react-router v4 you have to use <NavLink>
if you want to do conditional styling:
const Router = () => (
<BrowserRouter>
<div>
<Nav>
<NavLink exact activeClassName='is-active' to='/'>Home</NavLink>
<NavLink activeClassName='is-active' to='/about'>About</NavLink>
</Nav>
<Match pattern='/' exactly component={Home} />
<Match pattern='/about' exactly component={About} />
<Miss component={NoMatch} />
</div>
</BrowserRouter>
)
I added an exact property to the home <NavLink>
, I'm fairly sure that without it, the home link would always be active since /
would match /about
and any other pages you have.