Компоненты высшего порядка (High-Order Component (HOC)) — это нечто похожее на оболочку, которая добавляет дополнительные возможности вашим компонентам React. Можно представить это как чехол для телефона: чехол добавляет новые функции (например, защиту от воды), не меняя телефон как таковой.
Примечание: Компоненты высшего порядка (HOC) — это функции, принимающие компонент и возвращающие усовершенствованную версию этого компонента.
Пример: Добавление рамки
Чтобы показать, как работают HOC, давайте создадим простой пример — добавим рамку вокруг любого компонента:
Пример
Создадим функцию, которая добавляет рамку вокруг любого компонента, который ей передается:
// Это наш HOC — он добавляет рамку вокруг любого компонента
function withBorder(WrappedComponent) {
return function NewComponent(props) {
return (
<div style={{ border: '2px solid blue', padding: '10px' }}>
<WrappedComponent {...props} />
</div>
);
};
}
// Простой компонент без рамки
function Greeting({ name }) {
return <h1>Привет, {name}!</h1>;
}
// Создаем новый компонент с рамкой
const GreetingWithBorder = withBorder(Greeting);
function App() {
return (
<div>
<Greeting name="Джон" />
<GreetingWithBorder name="Джейн" />
</div>
);
}
В этом примере:
withBorder— это наш компонент высшего порядка (HOC), представляющий собой функцию, принимающую компонент.- Возвращает новый компонент, который оборачивает оригинальный компонент в
divс рамкой. - Исходный компонент (
Greeting) остаётся неизменённым. - Мы можем продолжать использовать как оригинальную, так и усиленную версию компонента.
Примечание: Часто HOC можно заменить на React-хуки, но HOC всё равно полезны для решения общих проблем, таких как аутентификация или шаблоны обработки данных.