Functional components are clearly the superior style --
the readability advantage alone overrides pretty much everything else (compare reading an almost-declarative function vs having to grok a mini state machine).
People always get dragged back to class components because some things (interacting with browser APIs) have to, at some point, be handled statefully. Some of the comments on that article seem to confirm this mentality. However, the better response when you find yourself "needing" a class component is to implement the stateful logic you need as an HoC (which may internally create a class component.. or recompose's `lifecycle`). This is always possible and you'll thank yourself later when that stateful logic is trivially reusable, easier to compose and test, and separated from any application logic.