目前,如果propType
验证失败,ReactJS将使用console.warn
发出警告。我真的很想在开发人员模式下遇到真正的错误,因此它可能会使我们的持续集成构建失败,而不仅仅是打印可能会在混洗中丢失的消息。
已经有对此的讨论,例如在this feature request中,并且此related question描述了预期的当前行为。很好,但是我个人希望它引发错误。
假设ReactJS不会为此提供更好的支持,那么的最佳解决方法是什么? 到目前为止,我想出的最好办法是覆盖console.warn
进行测试,例如
console.warn = function(msg) {
throw new Error(msg);
};
缺点是,在测试中实现起来可能很棘手,而且它不是特定于React的,因此还需要处理其他
console.warn
调用。 最佳答案
在this answer中,您可以针对典型的React消息检查错误消息,并仅针对这些消息进行抛出。并不完美,但可能距离您要寻找的东西更近了:
let warn = console.warn;
console.warn = function(warning) {
if (/(Invalid prop|Failed propType)/.test(warning)) {
throw new Error(warning);
}
warn.apply(console, arguments);
};