Class components are easily readable for Lifecycle methods. It is hard to understand what is going on with useEffect and the return function (to do mount / unmount). Try to ask a developer that never used React before what he/she understands about the function component code. So, for me, class components are still better when you need to use Lifecycle methods because the code must be readable in the first place. Sure we can create some helper hooks like useDidMount and useWillUnmount... but I think it is overkill... it is just simple to use it with class components.
