Если у компонента нет состояния (state
) или ссылок (refs
), используйте функции, а не классы.
Правила оформления кода на React
React является JavaScript-библиотекой, поэтому помимо нижеизложенных, следует также придерживаться правил оформления JavaScript кода.
1. Создание компонента без внутреннего состояния и ссылок
2. Именование
2.1 Расширения
Используйте расширение .js
для компонентов React.
2.2 Имя файла
Используйте PascalCase
для названий файлов, например, ReservationCard.js
.
2.3 Именование переменной
Используйте PascalCase
для компонентов React.
Используйте camelCase
для экземпляров компонентов React.
2.4 Именование компонента
Называйте файлы так же как и компоненты. Например, ReservationCard.js
должен содержать внутри компонент ReservationCard
. Однако корневые компоненты в директории должны лежать в файле index.js
, и в этом случае название папки должно быть таким же, как название компонента.
2.5 Именование компонента высшего порядка
Используйте сочетание имени компонента высшего порядка и имени переданного в него компонента как свойство displayName
сгенерированного компонента. Например, из компонента высшего порядка withFoo()
, которому передан компонент Bar
, должен получаться компонент с displayName
равным withFoo(Bar)
.
Почему? Свойство displayName
может использоваться в инструментах разработчика или сообщениях об ошибках, и если оно ясно выражает связь между компонентами, это помогает понять, что происходит.
2.6 Названия свойств
Избегайте использования названий свойств DOM-компонента для других целей.
Почему? Люди ожидают, что такие свойства как style
и className
имеют одно определенное значение. Изменение этого API в вашем приложении ухудшает читабельность и поддержку кода, что может приводить к ошибкам.
3. Выравнивание
Следуйте приведенным ниже стилям для JSX-синтаксиса.
Если свойства помещаются на одну строку, оставляйте их на одной строке.
Отступ у дочерних элементов задается как обычно.
4. Кавычки
Всегда используйте двойные кавычки: ("
) для JSX-атрибутов.
5. Пробелы
Не отделяйте фигурные скобки пробелами в JSX.
6. Свойства (Props
)
6.1 Названия свойств
Всегда используйте camelCase
для названий свойств.
6.2 Значения свойств
Не указывайте значение свойства, когда оно явно true
.
6.3 Свойство key
Не используйте индексы элементов массива в качестве свойства key
. Отдавайте предпочтение уникальному ID.
6.4 defaultProps
Всегда указывайте явные defaultProps
для всех свойств, которые не указаны как необходимые.
Почему? propTypes
является способом документации, а предоставление defaultProps
позволяет читателю вашего кода избежать множества неясностей. Кроме того, это может означать, что ваш код может пропустить определенные проверки типов.
7. Круглые скобки
Оборачивайте в скобки JSX теги, когда они занимают больше одной строки.
9. Методы
9.1 Замыкание локальных переменных
Используйте стрелочные функции для замыкания локальных переменных.
9.2 Привязка обработчиков событий
Привязывайте обработчики событий для метода render
в конструкторе.
Почему? Вызов bind
в методе render
создает новую функцию при каждой перерисовке.
9.3 Возврат значений в render
Всегда возвращайте значение в методах render
.
10. Последовательность
10.1 Последовательность вызова методов внутри компонента
Последовательность для class extends React.Component
.
- произвольные
static
методы constructor
getChildContext
componentWillMount
componentDidMount
componentWillReceiveProps
shouldComponentUpdate
componentWillUpdate
componentDidUpdate
componentWillUnmount
- обработчики кликов или событий, такие как
onClickSubmit()
илиonChangeDescription()
- getter методы для
render
, такие какgetSelectReason()
илиgetFooterContent()
- произвольные render методы, такие как
renderNavigation()
илиrenderProfilePicture()
render
10.2 Как определять propTypes
, defaultProps
, contextTypes
, и т.д.
Как определять propTypes
, defaultProps
, contextTypes
, и т.д.
10.4 isMounted
Не используйте isMounted
.
Почему? isMounted
— это антипаттерн, который недоступен при использовании ES6 классов и который планируют официально признать устаревшим.