Задать вопрос
@Vladislav6

В чем отличия подходов в React?

Здравствуйте дамы и господа.

На данный момент изучаю React, вещь интересная и прикольная, но хотелось бы разобраться.
Поправляйте, если я где-то не правильно что-то написал или понял.

В общем, с версии 16.8+ появились хуки, а так же компоненты теперь функциональные.
Теперь вот в чем вопрос: в самой документации реакта, компоненты создаются при помощи классов (классовые компоненты я так понял их называют), а в версии, как я писал выше, они уже функциональные.

1. В чем их отличие (кроме того, что те наследуются от классов, а другие делаются через функции)?
2. Правильно ли я понимаю, что это два разных подхода к созданию компонентов?
3. Если я правильно понял, актуальны ли оба варианта создания компонентов? или уже на данный момент все используют функциональные компоненты с хуками?

P.S. Обучаюсь по роликам, там используются классы. Использую для создания проекта create-react-app, а там версия реакта уже 17+. Правильно ли я делаю что переделываю из классов в функциональные компоненты? (немного странный вопрос получился, но все же)

Ну и в целом, если я где-то не так понял эту теорию - поправьте.
  • Вопрос задан
  • 189 просмотров
Подписаться 1 Простой Комментировать
Решения вопроса 1
@NarkoMan01
На мой взгляд функциональные компоненты, декларативные по отношению к классовым. Например:
1)Тебе не приходтся писать сеттеры/геттеры для каждого класса, для этого у тебя есть хуки(useState.)
2) Так же не стоит забывать про жизненные циклы компонентов. В классовых их 100500, и каждый отвечает за что то, в то время как в функц. он один это useEffect.
Это лишь некоторые примеры, но по ним понятно что, когда пишешь функц. пишешь меньше кода, что влияет на производительность кода.
Ответ написан
Пригласить эксперта
Ответы на вопрос 1
DollyPapper
@DollyPapper
Классовые компоненты до сих пор используются, но потихоньку становятся legacy. В самой документации написано, что Facebook (разработчики React), не собираются убирать классы, но их дальнейшая поддержка будет прекращена. Т. е. развиваться они не будут.
Ответ написан
Комментировать
Ваш ответ на вопрос

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

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