@maxxim9595

Как объявлять компоненты в React?

Практикуюсь на React. Насколько я знаю, есть три способа создания компонента React:
- обычное объявление функции function()
- стрелочные функции
- создание класса
Класс нужен, что бы компонент имел состояние (если не использовать хуки), если нет - использовать стрелочные функции. На одних сайтах пишут, что класс якобы как-то плохо влияет на производительность, а на других, что разницы нет никакой. Так где правда? Я понимаю, что я только учусь, но, хотелось бы это понять...
Еще вопрос, правильно ли я понимаю, что сейчас идет тенденция на полный отказ от классовых компонентов в пользу хуков? Или это вообще мелочи, которые не стоят внимания...
  • Вопрос задан
  • 239 просмотров
Решения вопроса 1
rockon404
@rockon404 Куратор тега React
Frontend Developer
Классовые компоненты никуда не уходят. Для них осталось несколько удобных кейсов. Например:
1. Удобное получение предыдущих значений свойств и состояний в componentDidUpdate.
2. Доступ к экземпляру компонента в хандлерах, передаваемых в браузерные API.
3. Сложные компоненты с большим количеством методов. Например VideoPlayer.

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

Оптимизация это отдельный вопрос, которому стоит посвятить время. Сейчас разве стоит предупредить вас, что преждевременная оптимизация - зло.

Попробуйте использовать в коде преимущественно функциональные компоненты и хуки. Сейчас почти все популярные библиотеки имеют в API довольно удобные в использовании хуки. Там, где покажется, что будет удобней использовать класс, не бойтесь использовать классы.
Ответ написан
Пригласить эксперта
Ответы на вопрос 2
Иногда классы все-равно нужны. Потому для того, чтобы код был в едином стиле - всегда использую классы.
Ответ написан
@NovichokIvanovich
начинающий программист
такой же новичок как и ты и пока везде использую классы
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы