Будут ли React Hooks заменять классы? - PullRequest
0 голосов
/ 27 февраля 2019

Теперь, когда у React наконец есть хуки, это в конечном итоге станет новым стандартом для создания компонентов или необходимость создания компонентов класса все еще существует?

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

Итак, когда поддерживаются все методы жизненного цикла, есть ли причина для создания компонентов класса?Классы все еще обрабатывают определенные ситуации лучше, чем функциональный компонент на данный момент?

1 Ответ

0 голосов
/ 01 марта 2019

Я собираюсь вежливо не согласиться с комментариями выше.Крючки - это 100% будущее React.Я настоятельно рекомендую прочитать статью Medium , написанную Даном Абрамовым в октябре 2018 года. В верхней части статьи Дана Абрамова есть видео с выступлением с основным докладом на последнем React Conf.В своем выступлении он впервые вводит крючки.К концу адреса он добавляет, что не рекомендует немедленно проводить рефакторинг ваших старых компонентов, но рекомендует использовать движущиеся хуки вперед (и это когда хуки были еще альфа-релизом):

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

Он следит за этим с:

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

Он обсудит это более подробно, если вы посмотрите все это.Я считаю, что выгода от этого заключается в том, что Facebook и Дэн Абрамов видят хуки как будущее React (как и я, но мое мнение не имеет значения).Они видят шаблоны, которые появляются из ловушек, значительно лучше, чем шаблоны, установленные компонентами класса.Они также указывают, что причина, по которой они намереваются поддерживать классовые компоненты, заключается в том, что они не намерены переписывать React или вносить критические изменения.

Существует также меньше раздувания кода из-за использования функций с состоянием в противоположностьдля расширения классов.Хуки подключаются непосредственно к глобальному состоянию приложения, поддерживаемому инфраструктурой React, а не поддерживают его локально через абстракцию (именно поэтому они называются хуками).Хуки способствуют повторному использованию кода с помощью пользовательских хуков .Хуки позволяют нам отслеживать индивидуальное состояние без методов и условий жизненного цикла с помощью useEffect .Существует множество других преимуществ использования перехватчиков над компонентами класса, но я не хочу писать здесь книгу.

В дополнение к перечисленным преимуществам и похвале со стороны команды Facebook, я бы отметил,ко всем сторонним библиотекам, которые добавляют поддержку хуков.Страница FAQ , которой вы поделились, указывает, что Redux и React Router планируют выпустить поддержку перехватчиков.Фактически, сопровождающие Redux с энтузиазмом обсуждают хуки с тех пор, как они были представлены публике.И Райан Флоренс (создатель React Router) выступил после Дана Абримова на React Conf.На самом деле он одобрил хуки:

Дэн только что сказал: «Не переписывайте свои приложения в хуки».Я думаю, что вы должны.

В дополнение к этому, Material-UI версии 4-alpha отсутствует, и они также представили крючки.

InПодводя итог, крючки - это будущее React, и мы должны их использовать.Они находятся в стабильном выпуске начиная с React v16.8.0, и нет никаких оснований не использовать их преимущественно для продвижения вперед.

...