Вопрос по reactjs, react-proptypes – PropTypes в реакции

5

В некоторых примерах я видел что-то вроде этого:

Footer.propTypes = {
  completedCount: PropTypes.number.isRequired,
  activeCount: PropTypes.number.isRequired,
  filter: PropTypes.string.isRequired,
  onClearCompleted: PropTypes.func.isRequired,
  onShow: PropTypes.func.isRequired
}

Что этоPropTypes действительно делаешь? Они хороши, чтобы иметь или должны иметь?

Хорошо бы иметь. React будет выдавать предупреждения во время выполнения в консоли, если вы не предоставите реквизиты, определенные в propTypes.facebook.github.io/react/docs/typechecking-with-proptypes.html azium

Ваш Ответ

2   ответа
3

Как указывает finalFreq, я исправлен! «Предоставленный пример будет отлично работать в будущих версиях реагирования. React устарел, вызывая функцию proptypes напрямую, но аннотирование компонента будет работать нормально в текущих и будущих версиях».

Я предлагаю потоковые типы, если вы просто изучаете типы в JS, работает во время сборки вместо времени выполнения. Это работает в редакторе! Расширения редактора также используют сильный вывод, чтобы предупредить вас, когда отсутствует менее очевидный тип, ноль или другой тип. Основным преимуществом является то, что это ускоряет разработку и уменьшает количество ошибок, не замедляя время выполнения. Вы можете легко снять поток с вашего JS до производства.

FlowType: https://flowtype.org/docs/getting-started.html#_

Я предлагаю TypeScript, если вы хотите более мощный и многофункциональный наборУчить типы в JS.

Машинопись: https://github.com/Microsoft/TypeScript

Чтобы ответить на ваш вопрос, проптипы никогда не были обязательны и в какой-то момент считались экспериментальными. Мне они понравились, но flowtype более прагматичен. ИМХО. Основное использование - предотвращение неправильного использования компонента путем предупреждения на ранних этапах разработки и предложение кодированной документации для лучшего понимания (потомство).

Редактировать: Я также хочу прояснить, что прототипы могут быть удалены для производства также.

Спасибо! Хороший улов! Исправленный! Urasquirrel
Не уверен, если вы намекаете, что TypeScript не работает во время компиляции или что он менее увлекателен, чем Flowtypes, но TypeScript действительно работает во время компиляции - это своего рода точка. Относительно того, насколько это весело, это полностью вопрос мнения. Levi Fuller
Этот ответ может вводить в заблуждение, когда дело доходит до сообщения об устаревании, приведенный пример будет отлично работать в будущих версиях реагирования. Реагируйте как устаревший, вызывая функцию proptypes напрямую, но аннотирование компонента будет прекрасно работать в текущей и будущих версиях.facebook.github.io/react/warnings/dont-call-proptypes.html finalfreq
На самом деле после нескольких месяцев работы. Я полностью не согласен с моим первоначальным заявлением. Поток легче понять в коротком запуске, но Typescript настолько богат, что в долгосрочной перспективе я бы сошел с ума, не выбрав его. Urasquirrel
1

Как мы используем propTypes в нашей работе, чтобы лучше понять каждый компонент с самого начала. Вы можете увидеть форму компонента на основе пропущенных элементов и лучше понять, как он работает.

Это также замечательно с .isRequired, потому что вы будете получать предупреждения, если он не был включен при создании компонента. Он также выдаст предупреждения, если ожидается, что опора будет одного типа, но фактически была передана как нечто иное.

Это ни в коем случае не является необходимым, но это значительно облегчит разработку вместе с другими, так как вы можете узнать, что и какой компонент ожидает передать и в какой форме. Это становится намного более критичным, когда новые компоненты создаются почти ежедневно, и вы пытаетесь использовать компонент, созданный кем-то другим, и никогда ранее не трогали его.

Похожие вопросы