#reactjs #react-proptypes
#reactjs #react-proptypes
Вопрос:
Простой вопрос:
Увеличивают ли PropTypes размер отправляемого пакета и будет ли он отображаться только в режиме разработки?
Ответ №1:
Это зависит от того, как вы создаете свой проект. Если вы используете webpack и задаете process.env.NODE_ENV
значение production
than PropTypes
, это не включает проверку всего типа в ваш пакет
Вы можете проверить source code
, чтобы понять, что будет включено в ваш пакет для каждой среды.
if (process.env.NODE_ENV !== 'production') {
var ReactIs = require('react-is');
// By explicitly using `prop-types` you are opting into new development behavior.
var throwOnDirectAccess = true;
module.exports = require('./factoryWithTypeCheckers')(ReactIs.isElement, throwOnDirectAccess);
} else {
// By explicitly using `prop-types` you are opting into new production behavior.
module.exports = require('./factoryWithThrowingShims')();
}
factoryWithThrowingShims
просто предоставляет прокладки для всех методов PropTypes, чтобы избежать исключений в вашем коде при вызове некоторого метода из PropTypes в производственной среде. Это означает, что весь код из PropTypes/factoryWithTypeCheckers.js
будет включен только тогда, process.env.NODE_ENV
когда он не равен production
. Если вам нужно полностью (даже Shims
) удалить PropTypes
из своего кода, вам нужно использовать некоторые плагины babel.
Ответ №2:
Вы бы использовали PropTypes в devDependencies
из package.json
. Итак, нет, это не увеличивает производительность сборки.
Комментарии:
1. Как насчет кода компонентов? Будут ли элементы prop-types удалены при сборке?
Ответ №3:
Вы бы использовали этот плагин babel для удаления ненужных PropTypes. https://www.npmjs.com/package/babel-plugin-transform-react-remove-prop-types
Комментарии:
1. Существуют ли ситуации, когда вы действительно хотели бы включить его в производство? Я в замешательстве относительно того, почему это вообще может быть вариантом? По моему ограниченному пониманию темы, prop-types должен помочь вам в разработке. Есть ли здесь варианты использования, которые я упускаю?
2. На самом деле мне не нравятся PropTypes, но иногда, когда вы регистрируете свои ошибки javascript, это может помочь с неправильными параметрами функций.