Почему оборачивать компонент React внутри стилизованного компонента - плохая идея

Ссылаясь на этот пост: https://www.styled-components.com/docs/faqs#when-should-i-use-styled

(а это: https://github.com/styled-components/styled-components/issues/1226#issuecomment-335240613)

Скажем, у вас есть компонент:

class MyComponent extends React.PureComponent {
    render() {
        return <div className = {className}>Hello</div>;
    }
}

И вы конвертируете его в стилизованный компонент:

export default styled(MyComponent)`    
    font-size: 20px;
    font-weight: bold;
    text-align: center; 
`;

Почему это не лучшая практика? Почему лучше просто использовать стилизованный компонент внутри? Вот так:

class MyComponent extends React.PureComponent {
    render() {
        return <MyStyledCmpt>Hello</MyStyledCmpt>;
    }
}

const MyStyledCmpt = styled.div`    
    font-size: 20px;
    font-weight: bold;
    text-align: center; 
`;

Приведите пример, когда это плохая идея (если возможно).

Ссылки, которые вы предоставили, довольно ясно показывают, почему это не лучшая практика. Основная проблема заключается в распределении логики пользовательского интерфейса между несколькими элементами. Почему это плохо? Потому что это ослабляет одну из самых сильных сторон стилизованных компонентов - инкапсуляцию стилей. Все в одном месте упрощает управление кодом (рефакторинг, удаление и т. д.).

Łukasz Wojciechowski 25.07.2018 22:50

@ ŁukaszWojciechowski интересно. Но в какой-то момент нам нужно будет создать стилизованный компонент-оболочку (например, чтобы стилизовать список более мелких компонентов). Чем это отличается от обертывания всего компонента React в стилизованном компоненте?

raneshu 26.07.2018 17:50

@ UkaszWojciechowski я имею в виду: чем render(){ return <MyWrapperStyledCmpt><SmallCmptList>...{even more components}</SmallCmptList></MyWrapperStyledCmpt>;} отличается от styled(MyComponent);

raneshu 26.07.2018 17:51
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
В JavaScript одним из самых запутанных понятий является поведение ключевого слова "this" в стрелочной и обычной функциях.
Концепция локализации и ее применение в приложениях React ⚡️
Концепция локализации и ее применение в приложениях React ⚡️
Локализация - это процесс адаптации приложения к различным языкам и культурным требованиям. Это позволяет пользователям получить опыт, соответствующий...
Навигация по приложениям React: Исчерпывающее руководство по React Router
Навигация по приложениям React: Исчерпывающее руководство по React Router
React Router стала незаменимой библиотекой для создания одностраничных приложений с навигацией в React. В этой статье блога мы подробно рассмотрим...
Массив зависимостей в React
Массив зависимостей в React
Все о массиве Dependency и его связи с useEffect.
1
3
914
0

Другие вопросы по теме