Проблема, с которой я столкнулся, кажется, сводит на нет саму цель CSS в JS. Я использую стилизованные компоненты. И когда я попытался использовать имя класса, которое используется где-то в дереве реакции внутри стилизованного компонента. Стили имен классов верхних компонентов каким-то образом применяются к имени класса, которое я использовал в (самом) дереве.
Действия по воспроизведению
Визуализируйте UpperComponent
в любом месте проекта React.
const StyledContainer = styled.div`
.title {
color: red;
margin-bottom: 32px;
}
`;
const UpperComponent = () => {
return (
<StyledContainer>
<FirstComponent />
<h4 className="title"> text inside upper component </h4>
</StyledContainer>
);
};
const FirstStyledContainer = styled.div``;
const FirstComponent = () => {
return (
<FirstStyledContainer>
<h4 className="title">text inside first component</h4>
<SecondComponent />
</FirstStyledContainer>
);
};
const SecondComponent = () => {
return (
<div>
<h4 className="title">text inside second component</h4>
<ThirdComponent />
</div>
);
};
const ThirdComponent = () => {
return (
<div>
<h4 className="title">text inside second component </h4>
</div>
);
};
Ожидаемое поведение
title
имя класса в UpperComponent
не должно влиять на элементы его потомков с тем же именем класса. Его следует ограничивать только <h4 className="title"> text inside upper component </h4>
Фактическое поведение
.title { color: red; margin-bottom: 32px; }
стили классов применяются ко всем компонентам внутри UpperComponent. title
каким-то образом сводится к ThirdCompoent
, который вложен в два компонента.
Это ожидаемое поведение или мне не хватает чего-то базового (передовой практики)?