Если вы имеете в виду лучше - с помощью эффективности, это очень трудно измерить. Вот замечательный пост Дана Абрамова о бенчмарке , где в конце он говорит:
Крюки всегда быстрее, чем HOC? Нет! Есть случаи, когда один подход выигрывает у другого, и это зависит от многих вещей.
Вот мой личный опыт:
Наша реакция + Redux SPA был запущен до эры хуков, и у нас более 100 миллионов пользователей и от 300 000 до 400 000 строк кода (не хвастаясь здесь, просто чтобы понять, что это действительно большое приложение).
Когда хуки были официально выпущены для Production, и мы наконец обновили нашу версию React, модалы, входы, кнопки, загрузчики изображений и многие другие простые компоненты выглядели потрясающе при переходе с компонентов класса на функциональные с хуками.
Код стало намного чище и проще в обслуживании. Некоторые компоненты / HOCs перешли от 50-100 строк до всего лишь 20 или 30 с использованием хуков. Это удивительно!
Однако сложные страницы и компоненты контейнера, с другой стороны, выглядели намного более беспорядочными. Например, наши маршруты выглядят лучше при использовании компонентов класса.
В этих случаях удобочитаемость при использовании компонентов класса намного выше.
Что касается производительности, опять же, я не думаю, что есть большая разница, и нам почти никогда не приходилось беспокоиться об этом, так что пока код хорошо написан.
Я создал небольшой проект ( Markdown Tables Generator ) как песочницу и практиковаться, используя только функциональные компоненты и крючки. Мне действительно нравятся крючки useSelector()
и useDispatch()
, но когда однажды меня спросили на собеседовании, буду ли я go универсальными крючками на их проекте среднего / большого размера, я сказал, что не буду.
Надеюсь, мой опыт поможет вам, и я предлагаю вам попробовать оба, учитывая масштаб вашего проекта. Самое замечательное в React заключается в том, что оба они могут быть смешаны почти без проблем.