Ich bin neu zu reagieren, also bitte gedulden Sie sich - ich bin mir sicher, dass dies ein einfaches Problem ist, aber ich habe eine Menge Probleme bei der Suche nach einer Lösung.REACT: toggle class onClick, und rufen Sie andere Funktion
Ich habe eine Reihe von Schaltflächen, wenn sie angeklickt werden, füge ich einen 'aktiven' Klassennamen zu dieser Schaltfläche hinzu und entferne sie von anderen Schaltflächen, die möglicherweise aktiv sind.
Ich muss auch ein Panel mit Inhalt basierend auf welche Schaltfläche geklickt wird öffnen.
Bisher habe ich es geschafft, den Klassennamen der klickten Taste umschalten, kann aber nicht herausfinden, wie es nur auf die Schaltfläche anzuwenden, die (siehe Code unten) geklickt wird
<a onClick={this.buttonClick(1)} className={this.state.isButtonActive ? 'active' : null}>button text</a>
<a onClick={this.buttonClick(2)} className={this.state.isButtonActive ? 'active' : null}>button text</a>
und die Funktion den aktiven Zustand und offen entsprechende Panel auf die Schaltfläche basierend wechseln geklickt:
buttonClick(buttonNumber) {
this.setState(prevState => ({
isButtonActive: !prevState.isButtonActive
}));
openPanel(buttonNumber)
}
ich habe mit dem Erstellen einer untergeordneten Komponente für die Schaltfläche und umschalten der Klassenname innerhalb der Komponente experimentiert, aber dann kann ich nicht auslösen die openPanel() funktioniert wie im übergeordneten com Teil.
Ich hoffe, das macht Sinn - vielen Dank im Voraus :)
dank Mario. meinst du verschiedene komponenten für jede taste (ich habe etwa 12 insgesamt), oder eine komponente für jede taste wiederverwendet? Gibt es eine andere Methode zum Hinzufügen eines Klicks zu einer Komponente, es funktioniert nicht für mich ... z. löst keinen Klick aus –
Sie haben eine Button-Instanz für jede Schaltfläche. Sie müssen die richtigen Requisiten dazugeben, ich habe mein Beispiel aktualisiert, um das zu reflektieren. –
danke Mario F, macht Sinn. das funktioniert jedoch, wie entferne ich die "aktive" Klasse von anderen Schaltflächen, wenn eine neue Schaltfläche angeklickt wird? –