Меня больше интересует, как именно функциональный компонент получает информацию о состоянии при помощи хуков. До введения хуков - считалось, что поскольку у функциональных компонентов нет backing instance (переводится в российской литературе как "экземпляр поддержки", хранящего состояние компонента), то у него нет, как состояния, так и всех сущностей, связанных с жизненным циклом. Есть теория, что поскольку в любом случае есть компонент root, который вроде как классовый, то хук есть ни что иное как средство работы с состоянием экземпляра поддержки корневого классового компонента. Т.е. можно предположить, что хук есть:
а) в целом схожая по задумке с Redux штука (ограничение мест хранения состояния)
б) коррелирует с идеями, выраженными в Haskell - если работаешь с нечистыми функциями (побочные эффекты, состояние и т.д.), будь добр это делать в отдельном месте, в React - операции с пропсами должны быть написаны на pure functions