The great sin of the migration to hooks was that the docs were so poorly written that everyone got into bad habits.
You can have self documenting state like class components in the form of reducers which are just state machines. But it is much later in the documentation.