2017-06-29 7 views
5

मैं हाल ही में प्रतिक्रिया का उपयोग शुरू किया और मैं इस तरह डिफ़ॉल्ट मान परिभाषित करते हैं:defaultProps बनाम तार्किक या

class TextInput extends Component { 
    render() { 
     return (
      <input 
       type="text" 
       name={ this.props.inputName || 'inputName' } 
       style={ this.props.inputStyle || {} } 
       className={ this.props.inputClass || '' } 
      /> 
     ); 
    } 
} 

के बजाय:

class TextInput extends Component { 
    render() { 
     return (
      <input 
       type="text" 
       name={ this.props.inputName} 
       style={ this.props.inputStyle} 
       className={ this.props.inputClass} 
      /> 
     ); 
    } 
} 

TextInput.defaultProps = { 
    inputName: 'inputName', 
    inputStyle: {}, 
    inputClass: '' 
} 

विपरीत क्या नुकसान इस दृष्टिकोण है defaultProps उपयोग करने के लिए ?

उत्तर

6

defaultProps का उपयोग करने के विपरीत इस दृष्टिकोण के क्या नुकसान हैं?

आपके विशेष कोड उदाहरण में; कोई नहीं, क्योंकि आप केवल एक बार प्रत्येक प्रोप का उपयोग कर रहे हैं। हालांकि, कई जगहों पर एक विशेष प्रोप का उपयोग करने वाले बड़े अनुप्रयोगों की कल्पना करें, यदि मूल्य गलत है तो मैन्युअल रूप से "फ़ॉलबैक वैल्यू" को परिभाषित करना बहुत कठिन हो जाएगा।

यह भी कल्पना करें कि क्या आप अचानक इस मूल्य को कुछ अलग करने का फैसला करते हैं; तब आपको अपने पूरे घटक से गुजरना होगा और हर जगह अपडेट करना होगा जहां उस विशेष प्रोप का उपयोग किया जाता है। इससे त्रुटियों और गलतियों का सामना करना पड़ेगा।

अपने दृष्टिकोण के साथ एक और मुद्दा है, तो आप वास्तव में चाहते एक विशेष प्रोप null या 0 के रूप में, इस तरह के falsy होने के लिए क्या है। फिर आपकी स्थिति असफल हो जाएगी और इसके बजाय "फ़ॉलबैक वैल्यू" का उपयोग किया जाएगा।


तो बुनियादी तौर पर, defaultProps का उपयोग कर अपने रंगमंच की सामग्री थोड़ा आसान और अधिक व्यापक और प्रबंधनीय प्रबंध करता है।

वैसे, आपके संदर्भ के लिए, आपके द्वारा उपयोग की जाने वाली तार्किक अभिव्यक्ति को Short-circuit evaluation कहा जाता है।

+0

मुझे लगता है, उत्तर के लिए धन्यवाद – sleepwalker00

2

दोनों दृष्टिकोण सही काम करते हैं। क्या होगा यदि आपको एकाधिक स्थानों पर प्रोप का उपयोग करना है? आप अपने कोड में हर जगह लॉजिकल ऑपरेशंस लिखना समाप्त कर देंगे। डिफ़ॉल्ट प्रोप को एक बार परिभाषित किया जा सकता है और बिना किसी समस्या के इस्तेमाल किया जा सकता है।

हालांकि, आप किसी भी तरह से उपयोग कर सकते हैं। यह सिर्फ कोडिंग शैली का मामला है।

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