[英]React-router tracking active link
Since react-router is not adding an active class to links or li's, I want to keep the active link in my menus state. 由于react-router并未将活动类添加到链接或li的活动类中,因此我想将活动链接保持在菜单状态。 When I log this.state.activeLink I get the correct value, but for some reason the class 'activeLink' is not added to the li.
当我登录this.state.activeLink时,我得到了正确的值,但是由于某种原因,类“ activeLink”没有添加到li中。 Why is this?
为什么是这样? isActive() is correctly returning true or false when I log it but still the class is not added to the li.
当我记录isActive()正确返回true或false时,但仍未将类添加到li中。 What's going on here?
这里发生了什么?
import React, { Component } from 'react';
import { Link } from 'react-router-dom';
import logo from '../images/logo.png';
export default class Navbar extends Component {
constructor(props){
super(props);
this.state = { activeLink : '' };
this.setActive = this.setActive.bind(this);
}
setActive(event){
this.setState({ activeLink: event.target.id });
}
isActive(link){
console.log('isActive:', link == this.state.activeLink);
link == this.state.activeLink ? 'activeLink' : '';
}
render(){
return (
<div className="header">
<div className="row">
<div className="header-left">
<div className="logo">
<img src={logo} alt=""/>
</div>
<div className="header-title">Physical Twist</div>
<div className="menu">
<ul className="nav">
<li className={this.isActive('home')}><Link to="/" id="home" onClick={this.setActive}>Home</Link></li>
<li className={this.isActive('store')}><Link to="/store" id="store" onClick={this.setActive}>Store</Link></li>
<li className={this.isActive('catalogue')}> <Link to="#" id="catalogue" onClick={this.setActive}>Catalogue</Link></li>
<li className={this.isActive('contact')} ><Link to="#" id="contact" onClick={this.setActive}>Contact</Link></li>
</ul>
</div>
</div>
</div>
</div>
);
};
}
isActive
is not returning anything. isActive
不返回任何内容。
isActive(link){
link == this.state.activeLink ? 'activeLink' : '';
}
should be 应该
isActive(link){
return link == this.state.activeLink ? 'activeLink' : '';
}
Because you forgot to add return
in isActive()
function, use this: 因为您忘记在
isActive()
函数中添加return
,所以使用以下命令:
isActive(link){
console.log('isActive:', link == this.state.activeLink);
return link == this.state.activeLink ? 'activeLink' : '';
}
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.