web-dev-qa-db-ja.com

propTypes検証が失敗した場合、ReactJSに実際のエラーをスローさせるか?

現在、propType検証が失敗した場合、ReactJSは_console.warn_を使用して警告を発行します。開発モードで実際のエラーが本当に欲しいので、シャッフルで失われる可能性のあるメッセージを出力するだけでなく、継続的な統合ビルドに失敗する可能性があります。

これについてはすでに議論されています。 in この機能要求 、およびこの 関連する質問 は、期待どおりの現在の動作を説明しています。それは問題ありませんが、個人的にエラーをスローしたいです。

ReactJSがすぐにこれに対するより良いサポートを提供しないと仮定して、最善の回避策は何ですか?これまでのところ、私が思いついた最善の方法は、テストのために_console.warn_をオーバーライドすることです。

_console.warn = function(msg) {
    throw new Error(msg);
};
_

この欠点は、テストで実装するのが難しい場合があり、React固有ではないため、他の_console.warn_呼び出しも処理する必要があることです。

32
nrabinowitz

this answer から、エラーメッセージを典型的な反応メッセージと照合して、それらに対してのみスローできます。完璧ではありませんが、探しているものに近いかもしれません。

let warn = console.warn;
console.warn = function(warning) {
  if (/(Invalid prop|Failed propType)/.test(warning)) {
    throw new Error(warning);
  }
  warn.apply(console, arguments);
};
6
lobati

昨日Facebookによって導入されたFlowTypeは、まさにあなたが求めているもののように聞こえます。コードを分析し、型を推測し、コンパイル時にエラーをスローできます。

特に、ReactおよびpropTypes引数のサポートが含まれています: http://flowtype.org/docs/react-example.html#property-use

5
Michael Martin