2015-10-14 2 views
13

मैं एक प्रोप जोड़ने की कोशिश कर रहा हूं जो अन्य प्रोपों पर निर्भर करता है जो मूल रूप से घटक के मालिक घटक द्वारा पारित किए जाएंगे।`this.props` के अंदर 'getDefaultProps()' के अंदर?

तो मैंने किया:

propTypes: { 
    user: React.PropTypes.object, 
    comment: React.PropTypes.object 
}, 

getDefaultProps: function() { 
    return { 
    admire: new Admire({ 
       user: this.props.user, 
       comment:this.props.comment 
      }) 
    }; 
} 

लेकिन यह रंगमंच की सामग्री user की तरह लगता है और commentgetDefaultProps कॉल समय में सुलभ नहीं हैं।

क्या कोई डिफ़ॉल्ट प्रोप परिभाषित करने का कोई तरीका है जो मालिक के घटकों से पारित अन्य प्रोपों पर निर्भर करता है?

उत्तर

21

getDefaultProps कहा जाता है और इस प्रकार this.props पर भरोसा नहीं कर सकते हैं। यह मालिक के पास पास नहीं होने पर डिफ़ॉल्ट प्रोप प्राप्त करना है।

एक वैकल्पिक समाधान getInitialState का उपयोग करना होगा क्योंकि यह आपको this.props.user और this.props.comment तक पहुंच प्रदान करेगा।

2

आपको वास्तव में इस तरह के प्रोप को संशोधित नहीं करना चाहिए, मुझे काफी यकीन है कि आपको ऐसा करने के बारे में एक कंसोल चेतावनी मिलेगी।

getInitialState फ़ंक्शन के माध्यम से आप Admire को राज्य में स्टोर करना चाहते हैं।

उदा। पहले किसी भी उदाहरणों बनाई गई हैं

propTypes: { 
    user: React.PropTypes.object, 
    comment: React.PropTypes.object 
}, 
getInitialState: function() { 
    return { 
     admire: new Admire({ 
      user: this.props.user, 
      comment: this.props.comment 
     }); 
    }; 
} 
संबंधित मुद्दे