На данный момент изучаю React, вещь интересная и прикольная, но хотелось бы разобраться.
Поправляйте, если я где-то не правильно что-то написал или понял.
В общем, с версии 16.8+ появились хуки, а так же компоненты теперь функциональные.
Теперь вот в чем вопрос: в самой документации реакта, компоненты создаются при помощи классов (классовые компоненты я так понял их называют), а в версии, как я писал выше, они уже функциональные.
1. В чем их отличие (кроме того, что те наследуются от классов, а другие делаются через функции)?
2. Правильно ли я понимаю, что это два разных подхода к созданию компонентов?
3. Если я правильно понял, актуальны ли оба варианта создания компонентов? или уже на данный момент все используют функциональные компоненты с хуками?
P.S. Обучаюсь по роликам, там используются классы. Использую для создания проекта create-react-app, а там версия реакта уже 17+. Правильно ли я делаю что переделываю из классов в функциональные компоненты? (немного странный вопрос получился, но все же)
Ну и в целом, если я где-то не так понял эту теорию - поправьте.
На мой взгляд функциональные компоненты, декларативные по отношению к классовым. Например:
1)Тебе не приходтся писать сеттеры/геттеры для каждого класса, для этого у тебя есть хуки(useState.)
2) Так же не стоит забывать про жизненные циклы компонентов. В классовых их 100500, и каждый отвечает за что то, в то время как в функц. он один это useEffect.
Это лишь некоторые примеры, но по ним понятно что, когда пишешь функц. пишешь меньше кода, что влияет на производительность кода.
Да, так и есть. Если стоит выбор между классовыми или же функц. компонентами, выбирай второе. Но для профилактики советую ознакомится с классовыми, т.к. на собесах любят задавать про них вопросы(а именно про жизненный циклы).
Михаил, ну не знаю конечно, лично мне удобно прописать useState в начале страницы и исходный state, ну и по необходимости, менять его. Единственное что действительно может усложнить, это если Вы меняете state, там нужно создать дубликат исходного state, и уже его менять, но опять же, это 2 строчки кода.
Vlad Yanukovich, Вообще я за функциональные компоненты, но справедливости ради, мне интересно как с помощью хуков ты повторишь componentDidCatch? Или интересно посмотреть на твою реализация получения prevProps.
Vlad Yanukovich, Ну вот я про это и говорю, что на данном уровне твоих знаний, все это будет в принципе не существенно. А когда ты дейтвительно будешь разбираться, то и ответ на этот вопрос ты сам найдешь. :)
ReactLover, ну такой подход тоже имеет место быть, я просто хотел изначально понять, что это (классы и функции) и правильно ли я в целом понял что это немного разные вещи. Если подытожить, то можно сделать упор на функциональные компоненты, но, классовые тоже нужно знать.
Хотя возникает вопрос у меня теперь, как часто используются классовые компоненты? в наше время (опять же, мне кажется этот вопрос немного не корректен, ввиду неопытности моей)
Классовые компоненты до сих пор используются, но потихоньку становятся legacy. В самой документации написано, что Facebook (разработчики React), не собираются убирать классы, но их дальнейшая поддержка будет прекращена. Т. е. развиваться они не будут.