2017-08-31 3 views
0

Ich habe the official documentation und the npm package description für PropTypes gelesen.Warum überprüft React meine propTypes nicht?

Allerdings, wenn ich diesen Code ausführen,

const propTypes = { 
    foo: PropTypes.string.isRequired, 
    bar: PropTypes.number.isRequired, 
    umu: PropTypes.string 
}; 

const defaultProps = { 
    umu: "default value" 
}; 

class MyComp extends React.Component { 
    constructor(props){ 
     super(props); 
    } 

    render() { 
     return (
     <ul> 
      <li>foo is {this.props.foo}</li> 
      <li>bar is {this.props.bar}</li> 
      <li>umu is {this.props.umu}</li> 
     </ul> 
     ); 
    } 
} 
MyComp.propTypes = propTypes; 
MyComp.defaultProps = defaultProps; 

class MyWrapper extends React.Component{ 
    render() { 
     return (
      <div> 
       <MyComp bar="string and not a number"/> 
      </div> 
     ); 
    } 
} 

ReactDOM.render(React.createElement(MyWrapper, null, null), document.getElementById("app")); 

mein propTypes nicht überprüft werden, obwohl die erforderliche Eigenschaft foo nicht gesetzt ist und die Eigenschaft bar ist keine Zahl. Kann mir jemand sagen, was ich falsch mache? Hier ist die entsprechende CodePen.

Vielen Dank im Voraus.

Antwort

1

Die Komponente wird auch dann gerendert, wenn die Validierung fehlschlägt, dies ist eher eine Warnung für den Entwickler, sodass Sie den Fehler auf der Konsole sehen würden. CodePen zeigt diese Warnungen jedoch nicht an, möglicherweise weil Sie die Produktionsversion von react verwenden? So oder so, das ist richtiges Verhalten.

+0

Zwei Fragen: 1. Wie kann ich die Entwicklungsversion von reagieren in CodePen wählen? Ich bin neu in React und CodePen und habe React nur aus dem "Quick-Add" in den Stifteinstellungen ausgewählt. 2. Ich bekomme das gleiche Verhalten mit meinem 'create-react-app'-Projekt in Visual Studio Code. Es gibt keine Warnungen. Wo sollten sie überhaupt erscheinen? In der Terminalausgabe beim Bauen? Hast du weitere Tipps für mich? – Joerg

+1

Ich bin nicht sicher über CodePen, aber nein, die Warnungen erscheinen zur Laufzeit auf Ihrer Browser-Konsole. Führen Sie einfach Ihre App aus und beobachten Sie diese Konsolenfehler im Browser – ZekeDroid

Verwandte Themen