【发布时间】:2018-11-03 09:24:22
【问题描述】:
所以我有一些文件:
App.js
class App extends React.Component {
render() {
return (
<div >
<NavBar />
<Main />
</div>
);
}
}
export default App;
NavBar.js
class NavBar extends React.Component {
render() {
console.log(this.props.match)
return (
<div className="navbar-fixed">
<nav className="light-blue lighten-1">
<div className="nav-wrapper container">
<a className="brand-logo">Logo</a>
<ul id="nav-mobile" className="right hide-on-med-and-down">
<li><NavLink exact to="/characters" activeClassName="active">Characters</NavLink></li>
<li><NavLink exact to="/locations" activeClassName="active">Locations</NavLink></li>
</ul>
</div>
</nav>
</div>
);
}
}
export default withRouter(NavBar);
Main.js
class Main extends React.Component {
render() {
return (
<Switch>
<Route exact path="/characters" component={Characters}/>
<Route exact path="/locations" component={Locations}/>
</Switch>
);
}
}
export default Main;
路由工作,虽然在 NavBar 文件中,我有 console.log(this.props.match) 行,我总是得到相同的路径,activeClassName 甚至不起作用。
每当我改变位置时,输出总是:
{
path: "/",
url: "/",
params: {…},
isExact: false
}
唯一改变的是密钥isExact。
我现在可以使用this.props.location 访问路径名,但我必须自己登录才能使活动的类名起作用。
我在这里遗漏了什么吗?任何帮助将不胜感激。
【问题讨论】:
标签: javascript reactjs react-router