На первый взгляд хуки выглядят сложно, но на самом деле они упрощают код. Вместо стейта в конструкторе удобнее использовать useState (по сути разбиение одного стейта на несколько). useEffect упрощает работу с методами жизненного цикла. Тоже самое можно сказать про другие хуки (useContext, useRef и т.д.). Мы также можем избавится от различных оберток в приложениях вместо connect использовать useDispatch и useSelector (касается редакса). Также очень удобно использовать хуки в реакт роутере (useHistory, useParams). Ну и наверно самое главное, что мы сами можем писать свои хуки, что позволяет делать крутые штуки(например проверка 3 капчи хуком). Уже год пишу на хуках и ни разу в них не разочаровался