React продвигает состав в качестве альтернативы наследованию классов. Компоненты были разработаны, чтобы быть эффективно составленными. Hooks API дополняет функциональные компоненты функциями, которые ранее требовали использования компонентов класса.
Это не значит, что наследование не разрешено. Проблема в том, что существующие шаблоны, такие как компонент высшего порядка, широко используются в экосистеме React и не совместимы с ООП:
const withBaz = Comp => <Comp baz />
@withBaz
class Bar extends Foo { ... }
Этот подход распространен, но он не подходит для ООП, потому что в этом случае Bar
на самом деле уже не класс, а функция стрелки, его нельзя наследовать дальше.
Нет проблем с использованием ООП для сторонних компонентов React, если разработчик контролирует все компоненты в иерархии классов, но это может быть непрактичным, поскольку всегда может возникнуть необходимость задействовать сторонний код, который не OOP удобно. Использование композиции, где она подходит, приводит к более гибкому дизайну.