Компоненты высшего порядка React дают нам возможность наследовать функциональность компонента другому компоненту. Проще говоря, мы можем повторно использовать функциональность компонента.

Давайте разберемся с этим на одном небольшом примере:

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

Счетчик кнопок без HOC:

Счетчик наведения без HOC:

Как вы можете видеть в приведенных выше файлах, мы реализовали логику увеличения счетчика в обоих файлах. Таким образом, с помощью HOC мы можем этого избежать. См. приведенный ниже пример.

Сначала мы создадим один компонент HOC:

Как вы можете видеть в приведенном выше компоненте HOC, он имеет один вложенный компонент, который содержит логику увеличения счетчика и связывает дочерний компонент (полученный из реквизита) с функцией count и handleCount и он возвращает этот компонент.

Примечание. Здесь мы взяли WrapperComponent как вложенный компонент. Но мы не можем взять туда анонимную функцию.

Теперь давайте посмотрим, как использовать этот компонент HOC в наших компонентах ButtonCounter и HoverCounter.

Счетчик кнопок с HOC:

Счетчик наведения с HOC:

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

Вывод:

В приведенном выше примере мы видели, как работает React HOC. Здесь мы использовали функциональные компоненты для реализации HOC. Но вы также можете использовать компоненты класса. И просто чтобы понять HOC, я взял этот пример увеличения счетчика. Мы также можем реализовать эту функциональность другими способами.

Спасибо за чтение и продолжайте учиться…..