TL;DR компоненты-классы нужно использовать для создания error boundaries и при ssr. В остальных случаях компонент-функция будет короче и проще.
Если хочешь понять, что могут и чего не могут функциональные компоненты — вот
подробное объяснение.
Там написано, что это не для новичков — поэтому нужно на самом деле разбираться, что такое компоненты, как они создаются в виде класса, а как — в виде функции.