Рубрики
Без рубрики

Реагируют Компоненты Более Высокого Порядка

Узнайте, что такое компоненты более высокого порядка и чем они полезны при программировании приложения React

Возможно, вы знакомы с функциями более высокого порядка в JavaScript. Это функции, которые принимают функции в качестве аргументов и/или возвращают функции.

Двумя примерами таких функций являются Array.map() или Array.filter() .

В React мы распространяем эту концепцию на компоненты, и поэтому у нас есть Компонент более высокого порядка (HOC) когда компонент принимает компонент в качестве входных данных и возвращает компонент в качестве выходных данных.

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

Мы можем использовать СПОСОБ добавления методов или свойств в состояние компонента или, например, хранилище Redux.

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

Существует соглашение о предварении компонента более высокого порядка строкой with (это соглашение, поэтому оно не является обязательным), поэтому, если у вас есть компонент Button , его специальный аналог должен называться с кнопкой .

Давайте создадим его.

Самый простой пример HOC – это тот, который возвращает компонент без изменений:

const withElement = Element => () => 

Давайте сделаем это немного более полезным и добавим свойство к этому элементу, в дополнение ко всем реквизитам, с которыми он уже поставляется, цвет:

const withColor = Element => props => 

Мы используем этот HOC в компоненте JSX:

const Button = () => {
  return 
}

const ColoredButton = withColor(Button)

и мы наконец можем визуализировать компонент обернутой кнопки в нашем приложении JSX:

function App() {
  return (
    

Hello

) }

Это очень простой пример, но, надеюсь, вы сможете понять суть HOC, прежде чем применять эти концепции к более сложным сценариям.

Оригинал: “https://flaviocopes.com/react-higher-order-components/”