2015-10-21 9 views
5

Ich mache wahrscheinlich etwas Dummes, aber ich kann defaultProps nicht funktionieren.Reagieren defaultProps funktioniert nicht

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 
    } 
} 

Ich habe Code, der bis wehen mit TypeError: 'undefined' is not an object (evaluating 'this.props.field.errors.length') auf this.props.field.value und this.props.field.errors.length und alle meine Tests angewiesen ist, sollte meine Standard-Requisiten es keinen Standardwert geben? Anfangs ist meine field Requisite ein leeres Objekt.

Antwort

9

Zunächst ist meine field Requisite ein leeres Objekt.

Standardrequisiten werden nur verwendet, wenn für die Requisite kein Wert übergeben wird. Es ist ein flacher Merge, kein tiefer Merge.

Vom docs (Hervorhebung von mir):

Das Ergebnis getDefaultProps() zwischengespeichert und verwendet werden, um sicherzustellen, dass this.props.value einen Wert haben wird , wenn sie nicht von der Mutterkomponente angegeben wurde.

+0

Sollte RTFM etwas vorsichtiger sein, muss ich meinen Ansatz überdenken. – Lee

+1

Dies ist der Schlüsselpunkt "Standardrequisiten werden nur verwendet, wenn für die Requisite kein Wert übergeben wird. Es ist eine flache Zusammenführung, keine tiefe Zusammenführung." – Wayou

+0

Es scheint, dass Linkverweis veraltet ist. Bitte beachten Sie stattdessen diese Seite. https://reactjs.org/docs/react-without-es6.html#declaring-default-props –

Verwandte Themen