मान लीजिए मैं में माता-पिता और बच्चे के घटकों के निम्नलिखित जोड़ी है प्रतिक्रिया:यदि किसी बच्चे के घटक के लिए प्रोप अपरिवर्तित हैं, तो क्या प्रतिक्रिया अभी भी पुनः प्रस्तुत करती है?
var ChildComponent = React.createClass({
getDefaultProps: function(){
return {
a: 'a',
b: 'b',
c: 'c'
}
},
render: function() {
return (
/* jshint ignore:start */
<div className={'child' + (this.props.b ? ' modifierClass' : '')} something={this.props.a}>
{this.props.c}
</div>
/* jshint ignore:end */
);
}
});
var ParentComponent = React.createClass({
componentDidMount: function(){
//After 10 seconds, change a property that DOES NOT affect the child component, and force an update
setTimeout(function(){
this.setState({foo: 'quux'});
this.forceUpdate();
}.bind(this), 10000);
}
getInitialState: function(){
return {
foo: 'bar',
a: 1,
b: 2,
c: 3
}
},
render: function() {
return (
/* jshint ignore:start */
<div className="parent">
<ChildComponent a={this.props.a} b={this.props.b} c={this.props.c}/>
</div>
/* jshint ignore:end */
);
}
});
React.render(
/* jshint ignore:start */
<ParentComponent />,
/* jshint ignore:end */
document.getElementsByTagName('body')[0]
);
जब मैं कर forceUpdate
, के बाद से रंगमंच की सामग्री है कि ChildComponent
बदल करने के लिए पारित किए गए, में से कोई भी करने की कोशिश प्रतिक्रिया करेंगे इसे फिर से प्रस्तुत करना ? क्या होगा यदि मेरे पास ऐसे 1000 बच्चे हैं, आदि?
मुझे जो चिंता है, वह एक ऐसी स्थिति है जहां मेरे पास बहुत गहरा ChildComponent
है जो वंश घटकों का एक बड़ा विशाल पेड़ है, लेकिन मैं केवल ParentComponent
पर कुछ अपेक्षाकृत कॉस्मेटिक बदलावों को लागू करना चाहता हूं। क्या बच्चों को फिर से प्रस्तुत करने की कोशिश किए बिना केवल माता-पिता को अद्यतन करने के लिए प्रतिक्रिया प्राप्त करने का कोई तरीका है?
वाह, यह वास्तव में मैं क्या देख रहा था है! फॉलो अप प्रश्न - क्या बच्चों को निष्पादित करने के लिए अभी भी 'mustComponentUpdate' को अनुमति देने के दौरान मूल घटक को अपडेट करने का कोई तरीका है? वर्तमान में, जब मेरा बैकबोन मॉडल 'चेंज' ईवेंट उत्सर्जित करता है, तो मेरा 'parentComponent'' forceUpdate' निष्पादित करता है। क्या कोई अपडेट है जो मैं एक अद्यतन को "मजबूर" करने के लिए कर सकता हूं, लेकिन फिर भी बच्चों पर 'चाहिएकंपोनेंट अपडेट' का आह्वान कर सकता हूं? – AlexZ
[प्रतिक्रिया दस्तावेज़ अलग होने के लिए विनती करते हैं] (http://facebook.github.io/react/docs/component-specs.html#updating-shouldcomponentupdate)। 'ForceUpdate' का उपयोग करते समय, यह कहता है कि' shouldComponentUpdate' को अनदेखा किया जाता है। – AlexZ
'shouldComponentUpdate' को स्वचालित रूप से 'ChildComponent' पर कॉल किया जाता है, आपको इसके बारे में कुछ भी करने की ज़रूरत नहीं है। 'forceUpdate'' ParentComponent' की 'shouldComponentUpdate' विधि को छोड़ देता है। – nilgun