2015-10-21 4 views
5

काम नहीं कर रहा है मैं शायद कुछ बेवकूफ कर रहा हूं, लेकिन मैं काम नहीं कर सकता डिफ़ॉल्ट काम करने के लिए।डिफ़ॉल्ट प्रतिक्रियाएं

export default class MyClass extends Component{ 
    static propTypes = { 
    name: React.PropTypes.string.isRequired, 
    field: React.PropTypes.object.isRequired 
    } 

    static defaultProps = { 
    field: { value: '', errors: [] } 
    } 

    render() { 
    // blah blah 
    } 
} 

मैं कोड है कि this.props.field.value और this.props.field.errors.length और मेरे सभी परीक्षणों पर निर्भर करता है TypeError: 'undefined' is not an object (evaluating 'this.props.field.errors.length') साथ उड़ा रहे हैं, नहीं मेरा डिफ़ॉल्ट रंगमंच की सामग्री यह एक डिफ़ॉल्ट मान देना चाहिए? प्रारंभ में, मेरा field प्रोप एक खाली वस्तु है।

उत्तर

9

प्रारंभ में, मेरा field प्रोप एक खाली वस्तु है।

डिफ़ॉल्ट प्रोप का उपयोग केवल तभी किया जाता है जब प्रोप के लिए कोई मान पास नहीं किया जाता है। यह उथला विलय है, गहरा विलय नहीं।

docs (जोर मेरा) से

:

getDefaultProps() का परिणाम कैश की गई और यह सुनिश्चित करें कि this.props.value एक मूल्य अगर यह माता पिता के घटक द्वारा निर्दिष्ट नहीं किया गया होगा इस्तेमाल किया जाएगा।

+0

आरटीएफएम थोड़ा और सावधानी से होना चाहिए, मेरे दृष्टिकोण पर पुनर्विचार करना होगा। – Lee

+1

यह मुख्य बिंदु है "डिफ़ॉल्ट प्रोप का उपयोग केवल तभी किया जाता है जब प्रोप के लिए कोई मान पास नहीं किया जाता है। यह उथला विलय है, गहरा विलय नहीं है।" – Wayou

+0

ऐसा लगता है कि लिंक संदर्भ पुराना है। कृपया इसके बजाय इस पृष्ठ का संदर्भ लें। https://reactjs.org/docs/react-without-es6.html#declaring-default-props –

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