TLDR:, उपयोग defaultChecked बजाय जाँच यहाँ http://jsbin.com/mecimayawe/1/edit?js,outputचेकबॉक्स प्रतिक्रिया नहीं भेज onChange
jsbin काम कर सेटअप करने के लिए एक सरल चेकबॉक्स कि अपनी लेबल पाठ से पता लगा जब यह चेक किया गया है जाएगा कोशिश कर रहा है। कुछ कारणों से हैंडल चेंज को घटक का उपयोग करते समय निकाल दिया नहीं जा रहा है। क्या कोई समझा सकता है कि मैं क्या गलत कर रहा हूं?
var CrossoutCheckbox = React.createClass({
getInitialState: function() {
return {
complete: (!!this.props.complete) || false
};
},
handleChange: function(){
console.log('handleChange', this.refs.complete.checked); // Never gets logged
this.setState({
complete: this.refs.complete.checked
});
},
render: function(){
var labelStyle={
'text-decoration': this.state.complete?'line-through':''
};
return (
<span>
<label style={labelStyle}>
<input
type="checkbox"
checked={this.state.complete}
ref="complete"
onChange={this.handleChange}
/>
{this.props.text}
</label>
</span>
);
}
});
उपयोग:
React.renderComponent(CrossoutCheckbox({text: "Text Text", complete: false}), mountNode);
समाधान:
जाँच का उपयोग नहीं करता है अंतर्निहित कीमत परिवर्तन (जाहिरा तौर पर) और इस तरह onChange हैंडलर फोन नहीं करता है।
var CrossoutCheckbox = React.createClass({
getInitialState: function() {
return {
complete: (!!this.props.complete) || false
};
},
handleChange: function(){
this.setState({
complete: !this.state.complete
});
},
render: function(){
var labelStyle={
'text-decoration': this.state.complete?'line-through':''
};
return (
<span>
<label style={labelStyle}>
<input
type="checkbox"
defaultChecked={this.state.complete}
ref="complete"
onChange={this.handleChange}
/>
{this.props.text}
</label>
</span>
);
}
});
सबसे पहले, क्यों न करें 'this.setState ({check:! This.state.checked})' मूल्य को स्टोर करने से आसान है। फिर चेक किए गए अटूट्यूट में एक टर्नरी ऑपरेटर: 'चेक = {this.state.checked? 'चेक किया गया': शून्य} ' – zackify
इस तरह यह शुरू हुआ, लेकिन यह कभी अपडेट नहीं हुआ। तो मैंने इसे यहां और वहां फेंकना शुरू कर दिया जो निकाला नहीं जा रहा था। आदर्श रूप से पूरा होने पर आदर्श रूप से सबसे सरल रूप में वापस जायेंगे :) – jdarling
मान लें कि आपका माउंट नोड एक वास्तविक डोम नोड है, आपको 'this.refs.complete.getDOMNode()। चेक' का उपयोग करना होगा। बेवकूफ देखें http://jsfiddle.net/d10xyqu1/ – trekforever