【发布时间】:2016-12-06 16:39:39
【问题描述】:
我正在尝试使用反应组件将类名添加到 div。这就是我所拥有的。顺便说一句,我对反应还很陌生。
class PrimaryNavigation extends Component {
constructor(props) {
super(props);
this.state = {
condition: false
};
}
onMouseEnterHandler() {
this.setState({
condition: !this.state.condition
});
}
clickHandlerFor(component) {
return (e) => {
if (typeof this.props.onClick !== 'function') {
return;
}
e.preventDefault();
var componentData = this.componentDataFor(component);
this.props.onClick(e, componentData);
};
}
componentDataFor(component) {
...
}
render(): ReactElement {
...
return (
<div className='PrimaryNavigation'>
<nav className='PrimaryNavigation-Links'>
<ul>
...
<li className="dropdown" onMouseEnter={this.onMouseEnterHandler}>
<Link to='/account' className='PrimaryNavigation-link dropbtn'>
<span className='PrimaryNavigation-label'><FormattedMessage id='navigation.my_account' /></span>
</Link>
<div id="myDropdown" className={this.state.condition ? "dropdown-content show" : "dropdown-content" }>
<div className="dropdown-box">
...
</div>
</div>
</li>
</ul>
</nav>
</div>
);
}
}
对于其中包含三元条件的 div,如果我将其保留为 this.state.condition,则 "dropdown-content" 的类名会出现。当我将其更改为!this.state.condition 时,"dropdown-content show" 的类名就会出现。意思是我遇到的问题是改变状态。在我的onMouseEnterHandler() 函数中,我已将条件更改为真。依然没有。
我能做什么?此外,如果我的问题措辞不正确,欢迎提出任何编辑建议。
【问题讨论】:
-
如果您在
onMouseEnterHandler中放置一个console.log,它是否会记录它正在被触发? -
onMouseEnterHandler是否绑定到正确的上下文?
标签: javascript reactjs