【发布时间】:2017-08-15 22:30:14
【问题描述】:
我目前正在使用 ReactJS(我是个初学者)。我想要做的是在站点导航中单击链接时显示/隐藏菜单组件。菜单被构建为位于组件(标题)内的组件。
用户单击菜单按钮,然后切换要显示或隐藏的菜单,但是我无法确定显示和隐藏菜单组件的逻辑应该在哪里显示隐藏相对简单我基本上想要向菜单组件添加和删除一个类以显示或隐藏它。
我的登录和注册表单也有类似的显示/隐藏功能,但是这些显示和隐藏类是在标题组件中添加的,而不是子组件中,到目前为止,这是我的标题组件 JS。
import React, { Component } from 'react'
从“prop-types”导入 PropTypes
从'./menu'导入菜单; 从'../Login'导入LoginForm; 从'../Register'导入RegisterForm;
导出默认类探索扩展组件{
constructor(props) {
super(props);
this.state = {
loginMenuVisible : false,
registerMenuVisible : false,
mainMenuVisible : false
};
console.log(this.state);
//this.triggerMenu = this.triggerMenu.bind(this);
}
render() {
return (
<div className="site__navigation">
<Menu />
<header className="site__header">
<a href="/"><img src="img/logo-full-color.png" alt="meatFree" /></a>
<ul className="header__navigation">
<li className="header__navigation__item">
<a href="/register" onClick={this.toggleMenu.bind(this, 'register')}>Register</a>
<ul className={this.state.registerMenuVisible ? "dropdown visible" : "dropdown"}>
<li>
<LoginForm />
</li>
</ul>
</li>
<li className="header__navigation__item">
<a href="#" onClick={this.toggleMenu.bind(this, 'login')}>Login</a>
<ul className={this.state.loginMenuVisible ? "dropdown visible" : "dropdown"}>
<li>
<LoginForm />
</li>
</ul>
</li>
<li className="header__navigation__item">
<a href="" className="nav__toggle">
Menu
</a>
</li>
</ul>
</header>
</div>
);
}
toggleMenu(type, e) {
e.preventDefault();
console.log(type);
switch(type) {
case 'login':
if(this.state.loginMenuVisible) {
this.setState({loginMenuVisible : false});
} else {
this.setState({
registerMenuVisible : false,
loginMenuVisible : true
});
}
break;
case 'register':
if(this.state.registerMenuVisible) {
this.setState({registerMenu : false});
} else {
this.setState({
registerMenuVisible : true
});
}
break;
case 'menu':
this.setState({mainMenuVisible : true });
}
}
}
如您所见,我有一个状态为 mainMenuVisible 的元素,我希望能够在 Menu 组件中对其进行操作。
【问题讨论】:
标签: javascript reactjs