Загрузка...
Загрузка...
Продолжая работу с платформой, вы принимаете условия Политики конфиденциальности и использование файлов cookie.
HOC (Higher-Order Component) — это функция, которая принимает компонент и возвращает новый компонент с дополнительной логикой.
Это паттерн переиспользования кода в React — он позволяет оборачивать базовые компоненты, расширяя их функциональность без изменения исходного кода.
const withExtraLogic = (WrappedComponent) => {
return function EnhancedComponent(props) {
// Дополнительная логика
return <WrappedComponent {...props} />;
};
};
function withLogger(WrappedComponent) {
return function LoggerComponent(props) {
console.log("Props:", props);
return <WrappedComponent {...props} />;
};
}
const Hello = ({ name }) => <h1>Привет, {name}</h1>;
const HelloWithLogger = withLogger(Hello);
// Использование
<HelloWithLogger name="Мир" />;
При каждом рендере вы увидите в консоли текущие пропсы, переданные в компонент.
Часто используются для:
connect)...props, чтобы передать их дальшеfunction withFetch(WrappedComponent, url) {
return function ComponentWithData(props) {
const [data, setData] = useState(null);
useEffect(() => {
fetch(url)
.then((res) => res.json())
.then(setData);
}, [url]);
return <WrappedComponent {...props} data={data} />;
};
}
Теперь любой компонент можно обернуть в withFetch, чтобы получить данные из API.
Вывод:
HOC — мощный способ переиспользовать логику между компонентами без дублирования кода. Он особенно полезен при написании кросс-компонентной функциональности: логгеры, защита маршрутов, обработка данных и т.п.