मैं खुद को एक घटक पर राज्य को जोड़ता हूं। आम तौर पर मुझे पता है कि नोड मैं फिर से प्रस्तुत कर दूंगा ताकि परिवर्तन प्रचार कर सकें और राज्य पूरी जगह पर न हो। हाल ही में, मैंने अपने हिस्से को JSX spread attributes का उपयोग करके अपने पहले बच्चों के प्रोप के रूप में इस घटक की स्थिति को पारित कर लिया है। बस बिल्कुल स्पष्ट होना करने के लिए है, यह मैं क्या मतलब है:बच्चों को प्रोप के रूप में राज्य पारित करने के लिए अच्छा अभ्यास है?
var Child = React.createClass({
handleClick: function(){
this.props.owner.setState({
count: this.props.count + 1,
});
},
render: function(){
return <div onClick={this.handleClick}>{this.props.count}</div>;
}
});
var Parent = React.createClass({
getInitialState: function(){
return {
count: 0,
owner: this
};
},
render: function(){
return <Child {...this.state}/>
}
});
और यह काम करता है (http://jsbin.com/xugurugebu/edit?html,js,output), तो आप हमेशा क्या हो रहा समझते हैं और राज्य के रूप में कम से कम रखने के लिए इस घटक के लिए वापस जा सकते हैं।
तो वास्तविक सवाल यह है कि, यदि यह एक अच्छा अभ्यास नहीं है और क्यों।
इस समय के बारे में मैं सोच सकता हूं कि इस दृष्टिकोण के साथ मालिक के राज्य में परिवर्तन होने पर हर बच्चे का घटक हमेशा फिर से प्रस्तुत करेगा, अगर ऐसा लगता है कि उपर्युक्त उपरोक्त उपयोग करने के लिए कुछ है छोटे घटक पेड़।
यह बहुत ही अनुसूचित और आसान नहीं है कि बच्चों को क्या भेजा जा रहा है जब माता-पिता सभी स्थानीय राज्यों को पारित कर रहे हैं जैसा आपने स्प्रेड विशेषताओं के साथ किया है। वास्तव में, घटक की जटिलता के आधार पर, क्या भेजा जा रहा है इसके बारे में तर्क करना मुश्किल हो सकता है। मुझे आश्चर्य होगा कि बच्चे को वास्तव में सभी माता-पिता के राज्य की ज़रूरत है। – WiredPrairie
हां, यह स्थिति पर निर्भर करेगा। यह देखने के लिए कि आपको क्या भेजा जा रहा है, आपको केवल माता-पिता को देखना होगा। मुझे यह कारण क्यों है कि यह स्पष्ट है कि राज्य कहां से आता है और प्रस्तुत करता है। – stringparser
यदि माता-पिता को स्थानीय रूप से परिभाषित किया गया है, तो यह आसान है। लेकिन चूंकि एक परियोजना गुंजाइश में बढ़ती है, और कई प्रकार के माता-पिता द्वारा एक घटक का उपयोग किया जाता है, चुनौती बढ़ सकती है। – WiredPrairie