I think hooks were a mistake.
I think components should have been made pure functions, with state/effects being provided by higher order components (HOCs).
For example:
Counter = ({count, setCount}) => {
// pure function here
}
StatefulCounter = withState(Counter, {
count: {
setCount: 0
}
})