Ich versuche mein erstes React-Projekt zu erstellen und stelle gerade eine Burger-Nav-Schaltfläche zusammen und ein Menü, das erscheint, wenn ich auf das Nav klicke.React - Umschalten der Anzeige einer Komponente aus dem onClick einer anderen Komponente
Ich habe dies in zwei Komponenten aufgeteilt; Hamburger und MenuOverlay. Der Code für beide ist unten.
Momentan habe ich einen onClick auf Hamburger, der eine Klasse darauf schaltet, aber wie würde ich auch das Menü von diesem Klick umschalten? Es ist mit Display versteckt: keine; standardmäßig. Wahrscheinlich eine sehr grundlegende Frage, also Entschuldigung - immer noch versucht, meinen Kopf um React zu bekommen.
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;
Hamburger
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;
Ihnen danken . Ich habe es funktioniert, aber ich musste Hamburger und MenuOverlay zu klassenbasierten Komponenten ändern. Verstehe ich das richtig? Ich habe nur das nörgelnde Gefühl, dass sie funktionale Komponenten sein sollten, und ich möchte nicht in schlechte Angewohnheiten geraten. ** MenuContainer ** https://jsfiddle.net/xtgq6La0/ ** Hamburger ** https: // jsfiddle.net/4jd24t85/ ** ** MenuOverlay https://jsfiddle.net/5t2bsobc/ Thanks again – Robkwood
Es gibt zwei Fragen zu stellen, wenn eine Klasse vs funktionale Komponente Berücksichtigung Hat diese Komponente jeder Staat oder ich tun müssen eine der Komponentenlebenszyklusmethoden verwenden. Wenn einer von beiden wahr ist, dann benutze das Klassenkomponentensystem, ansonsten verwende nur reine funktionale Komponenten. In diesem Fall würde ich sagen, dass Sie Recht haben, diese funktionalen Komponenten zu machen – finalfreq