2017-08-31 3 views
0

私はpropypeにthe official documentationthe npm package descriptionを読みました。Reactが私のpropypeをチェックしないのはなぜですか?

しかし、私はこのコードを実行すると、

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")); 

私の必要なプロパティ fooが設定されていないものの propTypesは、チェックされないと財産 barが数値ではありません。誰か私が間違っていることを教えてもらえますか? 対応するのは CodePenです。

ありがとうございます。

答えて

1

コンポーネントは検証に失敗してもレンダリングされますが、これは開発者にとっては警告であるため、コンソールでエラーが表示されます。 CodePenはこれらの警告を表示していませんが、おそらくあなたは反応のプロダクションバージョンを使用しているからですか?いずれにしても、これは正しい動作です。

+0

2つの質問 1. CodePenでreactの開発バージョンを選択するにはどうすればよいですか?私はReactとCodePenを初めて使っていて、Pen Settingsの「Quick-Add」から単にReactを選択しました。 2. Visual Studio Codeで私の 'create-react-app'プロジェクトと同じ動作をします。警告は一切ありません。とにかくそれらはどこに現れるべきですか?ビルド中の端末出力?あなたは私のためにそれ以上のティップを持っていますか? – Joerg

+1

私はCodePenについてはわかりませんが、警告はブラウザのコンソールで実行時に表示されます。アプリを実行してブラウザのコンソールエラーを監視するだけです – ZekeDroid

関連する問題