我希望通过下拉菜单实现以下功能:
1- 单击显示它
2- 再次单击隐藏它
3- 单击菜单外任何地方都会隐藏它。
4- 使用滑动效果完成上述所有操作。
我已经完成了1-3,但是在第4步卡住了。
请问如何创建滑动效果并与下面的单击事件一起发生?
我已经使用jQuery的slideToggle创建了一个可行的概念验证(此处未显示)...... 但是,我想学习如何以react方式完成它。
如果您想查看完整代码: react drop-down nav bar
1- 单击显示它
2- 再次单击隐藏它
3- 单击菜单外任何地方都会隐藏它。
4- 使用滑动效果完成上述所有操作。
我已经完成了1-3,但是在第4步卡住了。
请问如何创建滑动效果并与下面的单击事件一起发生?
我已经使用jQuery的slideToggle创建了一个可行的概念验证(此处未显示)...... 但是,我想学习如何以react方式完成它。
如果您想查看完整代码: 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>
)
}
}