2016-12-07 2 views
5

Я читал раздел React.Component в официальной документации по реактированию. Все имело смысл, за исключением part относительно propTypes. В документах указано следующее:Проверка типов опор в реактиве

В производственном режиме проверки propTypes пропускаются для повышения эффективности.

Скажем, у меня есть следующий код:

class Sample extends React.Component { 
    render() { 
     return (
      <div>Hello {this.props.name}</div> 
     ); 
    } 
} 

Sample.propTypes = { 
    name: React.PropTypes.string 
}; 

Подразумевает ли документы, что в производстве будут пропускаться мои чеки типа против props? Если да, как я должен проверять типы опоры?

+0

Вы должны создать приложение, которое не передает недопустимые типы вашим компонентам;) –

ответ

5

Вы не проверяете сами типы опоры, React делает это за вас.

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


Хотя вы находитесь в разработке, зная, что один из ваших реквизитов имеет неправильный тип, это стоит достойного компромисса.

После того, как вы в процессе производства, ваше приложение должно быть проверено достаточно тщательно, так что ни одна из ваших утверждений типа prop не работает в любом случае.

По этой причине они пропускаются, чтобы сделать ваше приложение более эффективным.

2

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

Нет необходимости проверять этот тип проверки в производственных сборках. Отсутствующие свойства не нарушают процесс рендеринга, они просто визуализируют ваш компонент неожиданным образом. Но обратите внимание, что ваш процесс рендеринга не удастся, когда вам нужно получить доступ к свойствам «данного» объекта.

Чтобы получить контроль над этим неожиданным поведением, вы должны объявить свойства по умолчанию.

Тем не менее, рекомендуется использовать объект propTypes и использовать модульные тесты, чтобы избежать неожиданного поведения рендеринга. Придерживаться!

+0

_Missing свойства не нарушают процесс рендеринга_ Обычно, но с другой стороны, «невозможно получить доступ к свойству foo undefined». – Timo

+0

Да, это правда! Редактирование моего ответа, спасибо. –

Смежные вопросы