2015-02-26 12 views
9

में ईवेंट पर क्लासनाम को जोड़ने या निकालने के लिए मैं वास्तव में प्रतिक्रिया करने के लिए काफी नया हूं और मैं मानक जेएस से अपनी सोच को बदलने के साथ थोड़ा संघर्ष कर रहा हूं।ReactJS

मेरे में घटक प्रतिक्रिया मैं निम्नलिखित तत्व होते हैं:

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

व्यवहार मैं देख रहा हूँ क्लिक पर एक अतिरिक्त वर्ग को जोड़ने के लिए है। मेरा पहला विचार क्लिक हैंडलर फ़ंक्शन में कक्षा को आजमाने और जोड़ने का था।

मैं किसी भी उदाहरण है कि इसी तरह कुछ भी हालांकि ढूँढने में सक्षम नहीं किया गया है, तो मैं काफी यकीन है कि मैं सही तरीके से इस बारे में सोच नहीं कर रहा हूँ कर रहा हूँ।

क्या कोई मुझे सही दिशा में इंगित कर सकता है?

उत्तर

21

कक्षाओं की सूची घटक की स्थिति से प्राप्त की जा सकती है। उदाहरण के लिए:

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 घटक के एक rerender ट्रिगर किया जाएगा।

+2

आप भी कर सकते हैं 'क्लाससेट()' एडन हेल्पर का उपयोग करें: http: //facebook.git hub.io/react/docs/class-name-manipulation.html – David

+0

Im तत्वों की एक सूची है, जब मैं इसे अपने समाधान में कार्यान्वित करता हूं, तो वर्ग सूची में सभी तत्वों के लिए बदल जाता है। मैं चाहता हूं कि यह सूची से केवल एक आइटम को बदल दे, एक आइटम जहां मैंने क्लिक किया है। इसका कोई समाधान? –

+0

टेम्प के लिए विपरीत व्यक्ति: तत्वों की एक सूची के लिए, शायद आपने क्लिक हैंडलर को बाध्य नहीं किया है। या तो 'onClick = {() => this.handleClick}' या अपने कन्स्ट्रक्टर में कुछ तत्व के साथ तत्व में: 'this.handleClick = this.handleClick.bind (यह); 'और अपने हैंडल में क्लिक करें, राज्य को बनें विशिष्ट तत्व ('this.setState ({someName}) ', उदाहरण के लिए), न केवल सामान्य' क्लिक किया गया: सत्य ' – eon

0

div करने के लिए रेफरी विशेषता जोड़ें:

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

फिर handleClick विधि में रेफरी द्वारा तत्व हो और का उपयोग जावास्क्रिप्ट classList संपत्ति:

handleClick =() => { 
    const element = this.refs.element; 
    element.classList.add('click-state'); 
} 

https://reactjs.org/docs/refs-and-the-dom.html

https://developer.mozilla.org/en-US/docs/Web/API/Element/classList

 संबंधित मुद्दे