Ответ
Разбиваю компоненты по принципу единой ответственности (Single Responsibility Principle). Каждый компонент должен решать одну конкретную задачу.
Основные критерии:
* **Логическая обособленность** (например, кнопка, модалка, форма)
* **Переиспользуемость** (если элемент встречается в нескольких местах)
* **Сложность** (слишком большой компонент делю на подкомпоненты)
Пример:
```
// Плохо: компонент делает слишком много
function UserProfile({user}) {
return (
)
}
// Лучше: разбить на мелкие компоненты
function UserProfile({user}) {
return (
)
}
```
Также учитываю уровень вложенности - стараюсь избегать глубоких деревьев компонентов.