2017-10-09 1 views
0

Ohne besondere Einladung war ich auf React Dokumentation here mit dem Ziel, mit der Idee von defaultProps zu spielen. Ich habe TypeError, das ich nicht verstehen kann!Reagieren mit defaultProptypes und propTypes-Prüfung, mit undefined Requisite

import React, {PropTypes} from 'react'; 
import ReactDOM from 'react-dom'; 



class Greeting extends React.Component { 
    render() { 
    return (
     <h1>Hello, {this.props.name}</h1> 
    ); 
    } 
} 

Greeting.defaultProps = { 
    name: 'Stranger' 
}; 

Greeting.propTypes = { 
    name: PropTypes.string, 
}; 

ReactDOM.render(<Greeting/>, document.getElementById('root')); 

Ergebnis:

Uncaught TypeError: Cannot read property 'string' of undefined 

Zeigen auf (in) Quellen:

name: _react.PropTypes.string 

Wie Sie in der Dokumentation zu lesen:
Die propTypes Typprüfung geschieht nach defaultProps aufgelöst werden, so Typprüfung wird auch Wenden Sie sich an die defaultProps.

Wenn ich entfernen:

Greeting.propTypes = { 
    name: PropTypes.string, //.isRequired 
}; 

Es wird keine Typeerror sein! Bitte, wie ich das verstehen konnte und beide propTypes und defaultProps ohne TypeError bekommen, wenn ich nicht explizit eine Requisite, die einen Standardwert zugewiesen hat, zur Verfügung gestellt (weshalb Standard-Wert existiert)?

Antwort

2

Der Fehler besagt, dass PropTypes nicht definiert ist, was bedeutet, dass ein Problem mit dem Import vorliegt.

import PropTypes from 'prop-types'; 

https://reactjs.org/docs/typechecking-with-proptypes.html

+0

Danke: Sie sollten PropTypes von prop-types importieren. Ich habe es importiert, aber als "React importieren, reagieren {PropTypes} von 'reagieren';" –

+1

und das lustige ist, dass ich von einem Video-Tutorial geübt habe, das nicht aktualisiert wurde, nur Ihre Antwort hat mich daran erinnert, dass es aktualisiert wird und nicht mehr, wo ich importiert habe! –

Verwandte Themen