> Как использовать принципы SOLID в React-разработке (React)

Уровень: senior · Роль: frontend · Категория: Технические вопросы

Компании: Иннотех

Стек: React

> Пример ответа

Принципы SOLID применимы в React через компонентную архитектуру и управление состоянием.

Single Responsibility (S) - каждый компонент отвечает за одну задачу. Например, компонент UserCard только отображает данные, а логика загрузки вынесена в хук useUser.

Open/Closed (O) - компоненты открыты для расширения (через пропсы, children или render-props), но закрыты для модификации. Пример: кнопка с пропсом variant расширяет стили, не меняя базовую логику.

Liskov Substitution (L) - подклассы (или компоненты-наследники) должны заменять базовые без нарушения работы. В React это достигается через интерфейсы пропсов: если Button ожидает onClick, то IconButton должен его поддерживать.

Interface Segregation (I) - не заставляйте компонент принимать пропсы, которые ему не нужны. Вместо одного большого пропс-объекта разбивайте на мелкие: { user, onDelete } вместо { data, handlers, config }.

Dependency Inversion (D) - компоненты не должны зависеть от конкретных реализаций (например, API-клиента). Используйте инверсию через пропсы или контекст: UserList получает fetchUsers как пропс, а не импортирует axios напрямую.

Пример кода:

JSX
// Вместо жесткой зависимости от API
const UserList = () => {
const [users, setUsers] = useState([]);
useEffect(() => { fetch('/api/users').then(...) }, []);
// ...
};
// Используем инверсию
const UserList = ({ fetchUsers }) => {
const [users, setUsers] = useState([]);
useEffect(() => { fetchUsers().then(setUsers) }, [fetchUsers]);
};

> ГОТОВЫ К СЛЕДУЮЩЕМУ СОБЕСЕДОВАНИЮ?

Запустите тренировочную сессию с ИИ и получите детальную обратную связь, чтобы увереннее проходить реальные интервью