Force ReactJS, чтобы бросать реальные ошибки, когда проверка propTypes терпит неудачу?
В настоящее время, если проверка propType
не выполняется, ReactJS использует console.warn
для выдачи предупреждения. Мне действительно нужна действительно ошибка в режиме dev, так что это может привести к сбою нашей непрерывной интеграции, а не просто распечатать сообщение, которое может быть потеряно в случайном порядке.
Уже обсуждалось это, например. в этот запрос функции, и этот связанный вопрос описывает текущее поведение, как ожидалось. Это прекрасно, но я лично хочу, чтобы он сделал ошибку.
Предполагая, что ReactJS не обеспечит лучшую поддержку для этого в ближайшее время, , что лучше всего обходится? Пока лучшее, что я придумал, это переопределить console.warn
для тестов, например
console.warn = function(msg) {
throw new Error(msg);
};
Недостатком этого является то, что в тестах может быть сложно реализовать, и он не зависит от конкретного ответа, поэтому также нужно обрабатывать другие вызовы console.warn
.
Ответы
Ответ 1
FlowType, представленный Facebook вчера, звучит так же, как и вы. Он может анализировать ваш код, выводить типы и бросать ошибки во время компиляции.
В него включена поддержка аргументов React и propTypes: http://flowtype.org/docs/react-example.html#property-use
Ответ 2
От этот ответ, вы можете проверить сообщение об ошибке против типичных сообщений о реакции и только выбросить для них. Не идеальный, но, возможно, шаг ближе к тому, что вы ищете:
let warn = console.warn;
console.warn = function(warning) {
if (/(Invalid prop|Failed propType)/.test(warning)) {
throw new Error(warning);
}
warn.apply(console, arguments);
};