我正在尝试构建我的第一个React项目,并且当前正在将汉堡导航按钮和单击导航时出现的菜单组合在一起。React - 从另一个组件的onClick切换显示一个组件
我已经把它分成两个部分;汉堡包和MenuOverlay。两者的代码如下。
目前我有一个在汉堡切换一个类的onClick,但我怎么也从该点击切换菜单?它隐藏着显示:无;默认。可能是一个非常基本的问题,所以很抱歉 - 仍然试图让我的头脑围绕React。
MenuOverlay
import React from 'react';
import { Link } from 'react-router';
const MenuOverlay =() => {
return (
<div className="menuOverlay">
<div className="innerMenu">
<p><Link to="/">Home</Link></p>
<p><Link to="/">About</Link></p>
<p><Link to="/">Contact</Link></p>
</div>
</div>
);
};
export default MenuOverlay;
汉堡
import React, { Component } from 'react';
class Hamburger extends Component {
constructor(props) {
super(props);
this.state = { active: '' };
this.handleClick = this.handleClick.bind(this);
}
handleClick() {
var toggle = this.state.active === 'is-active' ? '' : 'is-active';
this.setState({active: toggle});
}
render() {
return (
<button className={`hamburger hamburger--emphatic fadein one ${this.state.active}`} onClick={this.handleClick} type="button">
<span className="homeMenuTextButton">Menu</span>
<span className="hamburger-box">
<span className="hamburger-inner"></span>
</span>
</button>
);
}
}
export default Hamburger;
感谢你为这个。我有它的工作,但我不得不改变汉堡和MenuOverlay到基于类的组件。我是否正确?我只是有这种唠叨的感觉,他们应该是功能组件,我不想陷入坏习惯。 ** MenuContainer ** https://jsfiddle.net/xtgq6La0/ ** Hamburger ** https:// jsfiddle。净/ 4jd24t85/ ** ** MenuOverlay https://jsfiddle.net/5t2bsobc/ 再次感谢 – Robkwood
有两个问题考虑一类VS功能组件时,问:这是否元器件具有任何国家或做我需要使用任何组件生命周期方法。如果其中任何一个都是真的,则使用类组件系统,否则只使用纯功能组件。在这种情况下,我会说你是正确的做出这些功能组件 – finalfreq