typische Art und Weise
Die üblichste Muster dazu rendert selektiv das Element basierend auf Zustand.
class Foo extends React.Component {
state = { showing: true };
render() {
const { showing } = this.state;
return (
<div>
<button onClick={() => this.setState({ showing: !showing })}>toggle</button>
{ showing
? <div>This is visible</div>
: null
}
</div>
)
}
}
Alternative
Sie können auch einen Stil auf Zustand basiert. Dies ist weniger gebräuchlich, kann aber nützlich sein, wenn Sie komplexe Komponenten in diesem div-Beispiel haben. Ich hatte ein komplexes Nicht-Reagieren-D3-Diagramm innerhalb einer toggle-fähigen Komponente. Anfangs verwendete ich die erste Methode oben, verursachte aber ziemlich ein bisschen nacheilend, wenn man das div ein-/ausschaltet, weil D3 wieder hochfährt.
Im Allgemeinen den ersten Ansatz verwenden, es sei denn, Sie haben einen Grund, die Alternative zu verwenden.
class Foo extends React.Component {
state = { showing: true };
render() {
const { showing } = this.state;
return (
<div>
<button onClick={() => this.setState({ showing: !showing })}>toggle</button>
<div style={{ display: (showing ? 'block' : 'none') }}>This is visible</div>
</div>
)
}
}
Hinweis
Ich verwende den ?:
ternären Operator statt &&
- Ich bin ein überzeugter Anhänger, dass die Verwendung von ‚& &‘ ist auf einer Nebenwirkung von diesem Betreiber unter Berufung ein bestimmtes Ergebnis zu erzielen . Es funktioniert, versteh mich nicht falsch, aber der ternäre Operator ist meiner Meinung nach viel expressiver und wurde als Konditional konzipiert.
Dieses letzte Bit ist nur meine Meinung - also frage ich nicht die Verwendung von &&
.
Was haben Sie versucht? Du hast nur ein div hier gepostet. Zu Beginn benötigen Sie einen onclick-Handler, eine Form der Zustandsverwaltung und eine bedingte Rendering-Logik. –
Mögliches Duplikat von [Komponenten in ReactJS anzeigen/ausblenden] (http://stackoverflow.com/questions/29913387/show-hide-components-in-reactjs) –
Bitte suchen Sie, bevor Sie Fragen stellen. –