It’s taken me a while to get comfortable with the idea of React hooks but the good really does seem to outweigh the bad. Separation & encapsulation of concerns is a big win. And based on what’s there now, everyone will finally have to stop checking component state in their tests.
I’ve recently been building a nontrivial (albeit hobby) project with hooks from scratch, and yes, they do work amazingly well in practice. It’s already at the point where I find it hard to imagine how I’d have done it without them. A few gotchas but it’s almost all upside for me.
Downside: hooks make you think harder & more carefully about the consequences of mutable state, which is great, but a lot of people are confused. That should pass as those ideas become more familiar and we get better at teaching them and/or hiding them in friendlier abstractions.
But for me, right now, they dovetail perfectly with my particular experiences as a programmer and I couldn’t be happier with the (highly compositional, ~purely functional) ways of working they enable. Exciting times.