2015-02-26 42 views
9

'daki olayda bir className ekleme veya kaldırma Rehberinde oldukça yeniyim ve düşüncemi standart js'den dönüştürerek biraz uğraşıyorum. Benim içindeReactJS

bileşeni tepki Aşağıdaki elemanı vardır:

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

aradığım davranış tıklamasında ekstra sınıf eklemektir. İlk fikrim, sınıfı tıklama işleyici işlevine eklemeye çalışmaktı.

olsa benzer bir şey yapmak herhangi örneklerini bulmak mümkün olmamıştır, bu yüzden ben doğru bir şekilde bu konuda düşünmüyorum oldukça eminim.

Beni doğru yöne yönlendiren var mı?

cevap

21

Sınıfların listesi, bileşenin durumundan türetilebilir. Örneğin:

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 çağrılması bileşenin bir rerender tetikleyecektir. JavaScript classlist özelliği ref eleman almak Sonra handleClick yönteminde

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

ve kullanımı:

+2

Ayrıca şunu da yapabilirsiniz classSet() 'addon yardımcısını kullanın: http: //facebook.git hub.io/react/docs/class-name-manipulation.html – David

+0

Öğelerin bir listesini kullanıyorum, bunu çözümümde uyguladığımda, sınıf listedeki tüm öğeler için değişir. Listeden yalnızca bir öğeyi, tıklattığım bir öğeyi değiştirmesini istiyorum. Buna bir çözüm var mı? –

+0

Temp O'rary kişi için: Öğelerin bir listesi için, muhtemelen tıklama işleyicisini bağlamadınız. Öğesinde öğenin içinde, onClick = {() => this.handleClick} 'veya yapıcınızdaki:' this.handleClick = this.handleClick.bind (this); 've kolunuzdaBaşlamak için belirli eleman ('this.setState ({isim}}), sadece jenerik' tıklanan: doğru değil – eon