Foma
хотя если взять с редаксом, все логика вынесена с компонентов и у нас есть классы(нормально или прывычно выглядит диспатч) и функциональные компоненты(useSelector) то они режит глаз смотришь как спагетти тут так в другом месте подругому...
Сейчас я юзаю как классовые так и функциональные компонеты. Классовые компоненты являются наиболее высокоуровневыми в дереве компонентов, именно в них хранятся все обработчики для событий, делается связка с хранилищем редакса через connect, и если нужно, юзаются методы жизненного цикла.