2015-02-26 2 views
9

Ich bin ziemlich neu zu Reagieren und ich habe ein wenig mit der Konvertierung meiner Gedanken von Standard-js.Wie hinzufügen oder entfernen Sie einen Klassennamen auf Ereignis in ReactJS

In meiner reagieren Komponente I das folgende Element haben:

<div className='base-state' onClick={this.handleClick}>click here</div> 

Das Verhalten ich suche ist eine zusätzliche Klasse auf Klick hinzuzufügen. Meine erste Idee war, zu versuchen, die Klasse in der Click-Handler-Funktion hinzuzufügen, z.

Ich habe nicht in der Lage gewesen, keine Beispiele zu finden, die ähnliche alles tun, obwohl, so dass ich bin ziemlich sicher, dass ich nicht über diesen in der richtigen Art und Weise zu denken.

Kann mir jemand in die richtige Richtung zeigen?

Antwort

21

Die Liste der Klassen kann vom Status der Komponente abgeleitet werden. Zum Beispiel:

var Component = React.createClass({ 
    getInitialState: function() { 
    return { 
     clicked: false 
    }; 
    }, 

    handleClick: function() { 
    this.setState({clicked: true}); 
    }, 

    render: function() { 
    var className = this.state.clicked ? 'click-state' : 'base-state'; 
    return <div className={className} onClick={this.handleClick}>click here</div>; 
    } 
}); 

this.setState Aufruf wird eine rerender der Komponente auslösen.

+2

Sie können auch Verwenden Sie den 'classSet()' Addon Helper: http: //facebook.git hub.io/react/docs/class-name-manipulation.html – David

+0

Im eine Liste von Elementen, wenn ich dies in meiner Lösung implementieren, ändert sich die Klasse für alle Elemente in der Liste. Ich möchte, dass nur der eine Eintrag in der Liste geändert wird, der eine Eintrag, auf den ich geklickt habe. Irgendeine Lösung dafür? –

+0

Für Temp O'rary-Person: Für eine Liste von Elementen haben Sie wahrscheinlich den Click-Handler nicht gebunden. Entweder in dem Element mit etwas wie 'onClick = {() => this.handleClick}' oder in deinem Konstruktor: 'this.handleClick = this.handleClick.bind (this);' und in deinem handleClick, den Status für sein B. das spezifische Element ('this.setState ({someName})'), nicht nur das allgemeine 'clicked: true' – eon

Verwandte Themen