【发布时间】:2018-03-02 19:54:47
【问题描述】:
我想用我的下拉菜单完成以下操作。
1 - 点击时显示
2 - 第二次点击隐藏
3 - 点击它以外的任何地方时隐藏它。
4 - 使用幻灯片效果完成所有操作
我已经覆盖了 1-3 个。我在 4 个被阻止了。
如何创建幻灯片效果以及下面发生的以下点击事件?
我有一个使用 jQuery 的 slideToggle(此处未显示)的工作概念证明......但是,我想学习如何以反应的方式做到这一点。
如果您想查看完整的代码: react drop-down nav bar
// CASE 1 Show Hide on click, no slide effect yet
class ServicesDropdown extends Component {
constructor() {
super();
this.state = {
dropdown: false
};
}
handleClick = () => {
if (!this.state.dropdown) {
// attach/remove event handler
document.addEventListener('click', this.handleOutsideClick, false);
} else {
document.removeEventListener('click', this.handleOutsideClick, false);
}
this.setState(prevState => ({
dropdown: !prevState.dropdown,
}));
}
handleOutsideClick = (e) => {
// ignore clicks on the component itself
if (this.node.contains(e.target)) {
return;
}
this.handleClick();
}
render() {
return (
<li ref={node => { this.node = node; }}>
<a href="#!" onClick={this.handleClick}>Services +</a>
{this.state.dropdown &&
(
<ul className="nav-dropdown" ref={node => { this.node = node; }}>
<li><a href="#!">Web Design</a></li>
<li><a href="#!">Web Development</a></li>
<li><a href="#!">Graphic Design</a></li>
</ul>
)}
</li>
)
}
}
【问题讨论】:
标签: javascript reactjs ecmascript-6