Начинаю новый проект, и задумываюсь над подходом написания компонентов. Стоит ли изучать и использовать в новом проекте функциональные компоненты с хуками вместо классовых компонентов?
CryNet, вряд ли я смогу рассказать лучше и доступнее чем статья на эту тему в доках реакта. Дам даже видос с докладом есть на эту тему, описана мотивация их введения и прочее.
насчет запомнить - в 90% случаев - это будут useState и useEffect. Вот, вы уже запомнили.
Из собственной практики - заметно меньше кода, проще интеграция с внешними библиотеками, все концепты упрощаются не теряя в функциональности. Переиспользование кода лучше. Типизация лучше - в большинстве случаев TS выводит все типы правильно автоматом, меньше писать явных типов руками, а тайпчекинг при этом работает лучше.
из минусов - код с хуками легче превращается в лапшекашу в неумелых руках чем код на классах.
Одно из очевидных - невозможность нормального красивого переюзания stateful-логики. Хуки ты можешь заталкивать друг в друга, комбинировать куски логики и потом всё это юзать в любом количестве компонентов. На классах так просто это не сделать.