С прошлой осени я полностью отказался от крючков. Они решают почти все проблемы, которые мне приходилось решать с помощью компонентов, и делают это очень чисто. Но они не всегда настолько интуитивны, как вы можете ожидать. Недавно я написал компонент, который использует React-DnD и react-dropzone для создания простой, сортируемой, перетаскиваемой галереи загруженных файлов. Обе библиотеки используют хуки, и настроить их не составило труда.

Позже в том же проекте у меня был еще один вариант использования, в котором требовалось представление списка загруженных файлов. Я чувствовал, что нет необходимости повторяться, поэтому я сделал свой собственный хук, в котором хранилась вся логика сортировки и загрузки, которая просто возвращала некоторые подходящие обратные вызовы. Благодаря этому я мог создать два разных презентационных компонента, которые просто используют один и тот же крючок для выполнения всей тяжелой работы.

Вот в чем проблема. Когда загрузка завершилась, состояние моих загрузок устарело.