【发布时间】:2018-10-10 16:45:07
【问题描述】:
我最近尝试像这样实现导航链接:
import React from 'react';
import { Link, NavLink } from 'react-router-dom';
import '../css/navbar.css';
import logoWhite from '../../common/images';
const Navbar = props => {
return (
<div id="navbar" className="grid">
<Link to="/" className="column logo-container">
<img src={logoWhite} alt="Test logo" />
</Link>
<ul className="column navigation">
<li>
<NavLink to="/" exact className="nav-link" activeClassName="active">Home</NavLink>
</li>
<li>
<NavLink to="/match" className="nav-link" activeClassName="active">Partner Proposals</NavLink>
</li>
</ul>
</div>
);
};
export default Navbar;
在运行时,我遇到了路由更改时类名未传递给导航链接的问题。阅读文章,我怀疑shouldComponentUpdate 方法正在呈现false。所以,我像这样重写了Navbar:
import React from 'react';
import { Link, NavLink } from 'react-router-dom';
import '../css/navbar.css';
import logoWhite from '../../common/images';
class Navbar extends React.Component {
shouldComponentUpdate() {
console.log('Console log activated');
return true;
}
render() {
return (
<div id="navbar" className="grid">
<Link to="/" className="column logo-container">
<img src={logoWhite} alt="Test image" />
</Link>
<ul className="column navigation">
<li>
<NavLink to="/" exact activeClassName="active" className="nav-link">Home</NavLink>
</li>
<li>
<NavLink to="/match" activeClassName="active" className="nav-link">Partner Proposals</NavLink>
</li>
</ul>
</div>
);
}
}
export default Navbar;
奇怪的是componentDidUpdate在控制台返回了值(暗示它返回true),但是NavLink仍然没有通过activeClassName
谁能提出解决这个问题的方法?
【问题讨论】:
-
澄清一下,您在问为什么当路由处于活动状态时没有应用
activeClassName中指定的类,对吗?为了确保,您知道您的第二个 sn-p 实际上并没有使用activeClassName,对吧? -
指定的类没有被应用;是的,这就是我问的问题。但是我在第二个 sn-p 中打错了
-
尝试 isActive(),在给定的链接中显示并测试发生了什么 - github.com/ReactTraining/react-router/blob/master/packages/…
-
您可以将“active”类名更改为“is_active”或其他名称,并设置类名的样式(例如:font-weight: bold)。
标签: reactjs ecmascript-6 react-router jsx react-router-v4