Files
freeCodeCamp/guide/russian/react/what-are-react-props/index.md
Randell Dawson 0a1eeea424 fix(guide) Replace invalid prism code block names (#35961)
* fix: replace sh with shell

fix replace terminal with shell

fix replace node with js

fix replace output with shell

fix replace cs with csharp

fix replace c++ with cpp

fix replace c# with csharp

fix replace javasctipt with js

fix replace syntax  with js

fix replace unix with shell

fix replace linux with shell

fix replace java 8 with java

fix replace swift4 with swift

fix replace react.js with jsx

fix replace javascriot with js

fix replace javacsript with js

fix replace c++ -  with cpp

fix: corrected various typos

fix: replace Algorithm with nothing

fix: replace xaml with xml

fix: replace solidity with nothing

fix: replace c++ with cpp

fix: replace txt with shell

fix: replace code with json and css

fix: replace console with shell
2019-05-15 19:08:19 +02:00

126 lines
5.7 KiB
Markdown
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

---
title: React TypeChecking with PropTypes
localeTitle: React TypeChecking с помошью PropTypes
---
## React PropTypes
Они служат в качестве метода проверки типов, поскольку приложение имеет тенденцию к росту, при этом очень большая база ошибок, как правило, исправляется с использованием этой функции.
## Как получить PropTypes
Начиная с версии React 15.5, эта функция была перенесена в отдельный пакет с именем prop-types.
Чтобы использовать его, он должен быть добавлен в проект в качестве зависимости, выпустив следующую команду в консоли.
```shell
npm install --save prop-types
```
После этого, на самом деле, доступен целый ряд валидаторов, которые могут быть использованы для обеспечения того, чтобы данные, получаемы разработчиком верны.
Когда отображается недопустимое значение, в консоли JavaScript появится предупреждение.
Обратите внимание, что по соображениям производительности определенные PropTypes проверяются только в режиме разработки.
Также, напротив, состояние компонента, которое можно манипулировать по мере необходимости, эти props только для чтения.
Это значение не может быть изменено компонентой.
## Доступные PropTypes
Ниже пример кода с различными валидаторами, предоставляемыми пакетом, и пример как их добавлять в компоненту.
```javascript
import PropTypes from 'prop-types';
class MyComponent extends Component{
constructor(props){
super(props);
}
render(){
return (
...
);
}
}
MyComponent.propTypes = {
// prop, который описывает примитивные типы данных в JS. По умолчинаию они необязательны
optionalArray: PropTypes.array,
optionalBool: PropTypes.bool,
optionalFunc: PropTypes.func,
optionalNumber: PropTypes.number,
optionalObject: PropTypes.object,
optionalString: PropTypes.string,
optionalSymbol: PropTypes.symbol,
// Все что может быть отрисовано: числа, строки, элементы или массивы
// или fragment, содержащий эти типы данных.
optionalNode: PropTypes.node,
// React элемент в качестве PropType
optionalElement: PropTypes.element,
// Определение того что prop это экзампляр класса. Для этого нужно использовать
// JS's instanceof оператор.
optionalMessage: PropTypes.instanceOf(AnotherComponent),
// Вы можете ограничить prop определив конкретное значание для него
optionalEnum: PropTypes.oneOf(['News', 'Photos']),
// Объект определенный как несколько различных типов
optionalUnion: PropTypes.oneOfType([
PropTypes.string,
PropTypes.number,
PropTypes.instanceOf(AnotherComponent)
]),
// Массив с элементами определенного типа
optionalArrayOf: PropTypes.arrayOf(PropTypes.number),
// Объект с элементами определенного типа
optionalObjectOf: PropTypes.objectOf(PropTypes.number),
// Объект с определенной формой
optionalObjectWithShape: PropTypes.shape({
color: PropTypes.string,
fontSize: PropTypes.number
}),
// Вы можете добавить в цепочке определение ключевое слово `isRequired`,
// чтобы быть уверенным что будет показано предупреждение, что prop отсутсвует
requiredFunc: PropTypes.func.isRequired,
// Любой тип данных
requiredAny: PropTypes.any.isRequired,
};
```
## Установка значений по умолчанию
В рамках этой функции также можно определить значения по умолчанию для любого заданного компонента, определенного при разработке.
Они гарантируют, что у prop будет значение, даже если оно не указано родительским компонентом.
Код ниже иллюстрирует, как использовать эту функциональность.
```javascript
import React,{Component} from 'react';
import PropTypes from 'prop-types';
class MyComponent extends Component{
constructor(props){
super(props);
}
render(){
return (
<h3>Hello, {this.props.name}</h3>
);
}
}
MyComponent.defaultProps = {
name: 'Stranger'
};
```
Для получения дополнительной информации о PropTypes и других документах в React.
Перейдите на [официальный сайт](https://reactjs.org/) и прочитайте документы, или [GitHub Repo](https://github.com/facebook/react/)