Смотреть в Telegram
🚀 Higher-Order Components (HOC) в React: Паттерн для повторного использования логики Привет, друзья! 👋 Сегодня поговорим о Higher-Order Components (HOC) — одном из популярных паттернов в React, который помогает повторно использовать логику между компонентами. 🔹 Что такое HOC? HOC (компонент высшего порядка) — это функция, которая принимает компонент и возвращает новый компонент с добавленной функциональностью. HOC ≠ обычный компонент. Это скорее обёртка, которая расширяет функционал ваших компонентов. Синтаксис:
const withExtraProps = (WrappedComponent) => {
  return (props) => {
    // Добавляем новые пропсы или логику
    const extraProps = { additional: 'value' };
    return <WrappedComponent {...props} {...extraProps} />;
  };
};
🔹 Когда использовать HOC? HOC применяется, когда нужно: 1. Повторное использование логики между несколькими компонентами. 2. Оборачивать компонент в дополнительную функциональность, например, авторизация, логирование или обработка данных. 3. Добавить новые пропсы или состояния. Пример: HOC для проверки авторизации. 🔹 Пример HOC Задача: Реализовать HOC для отображения содержимого только для авторизованных пользователей.
import React from 'react';

// HOC для проверки авторизации
const withAuth = (WrappedComponent) => {
  return (props) => {
    const isAuthenticated = props.isAuthenticated; // Получаем пропс

    if (!isAuthenticated) {
      return <div>Доступ запрещён. Пожалуйста, войдите в систему.</div>;
    }

    return <WrappedComponent {...props} />;
  };
};

// Пример компонента
const UserProfile = (props) => {
  return <div>Привет, {props.name}! Это твой профиль.</div>;
};

// Оборачиваем компонент
const ProtectedUserProfile = withAuth(UserProfile);

// Использование
export default function App() {
  return (
    <div>
      <ProtectedUserProfile isAuthenticated={false} name="Алексей" />
    </div>
  );
}
Результат: Если пользователь не авторизован, вместо компонента UserProfile отобразится сообщение "Доступ запрещён". 🔹 Важные аспекты при работе с HOC 1. Передача пропсов HOC должен передавать все пропсы внутрь оборачиваемого компонента, чтобы он оставался гибким:
<WrappedComponent {...props} />
2. Декларативное имя Придумайте читаемое имя для вашего HOC, например, withAuth, withLogger. 3. Не переусложняйте HOC может сделать код сложнее для понимания. Если логику можно вынести в кастомные хуки — выбирайте их. 4. Не мутируйте оборачиваемый компонент HOC не должен изменять оригинальный компонент, а только оборачивать его. 🔹 Когда НЕ использовать HOC Сегодня многие задачи, которые решались через HOC, проще выполнять с помощью: - Custom Hooks для повторного использования логики. - Context API для глобального состояния. HOC остаётся актуальным, но его популярность снижается в пользу более простых решений. 🎯 Заключение Higher-Order Components — мощный инструмент, если вы хотите добавить функционал к компонентам, сохраняя их чистоту и переиспользуемость. Но помните, что HOC — не единственный способ повторного использования логики, и в некоторых случаях кастомные хуки могут быть лучшим выбором 😊 ReactJs Daily | #begginers
Love Center - Dating, Friends & Matches, NY, LA, Dubai, Global
Love Center - Dating, Friends & Matches, NY, LA, Dubai, Global
Бот для знакомств