我们应该在 React 风格的组件中使用 BEM(Block, Element, Modifier)
Should we use BEM(Block, Element, Modifier) in react styled component
我正在使用 React 风格的组件。我们应该在样式组件中使用 BEM(Block, Element, Modifier) 吗?如果是那么怎么办?
我试着给 ClassName
但它不起作用
import { SiteHeader } from './site-header';
export const SiteHeaderStyled = styled(SiteHeader).attrs({
className: 'SiteHeader',
})`
&__nav {
color: red;
}
`;
那是你自己的,你只能使用 styled-components 来定义每个需要样式的节点,或者你可以将两者混合使用:使用 styled-components + 内联样式,styled-components 用于组件容器 + 内部节点的类名(在样式容器中定义样式),甚至根据情况混合使用这 3 种方法。
在任何情况下,如果你坚持使用 styled-component,你就不需要 BEM,因为所有东西至少都只限于 1 个组件
编辑:对您的编辑的回应
什么不起作用? SiteHeaderStyled (.SiteHeader) 或导航子项上的样式 ?
&__nav
不能工作,因为没有parent(在scss代码部分),你必须这样包装:
export const SiteHeaderStyled = styled(SiteHeader).attrs({
className: 'SiteHeader',
})`
.SiteHeader {
&__nav {
color: red;
}
}
`;
使用上面的截图就来了
在任何情况下,如果它是一个到处都使用 styled-component 的项目,那么像这样的东西就足够了:
import { SiteHeader } from './site-header';
export const SiteHeaderStyled = styled(SiteHeader)`
.nav {
color: red;
}
`;
我正在使用 React 风格的组件。我们应该在样式组件中使用 BEM(Block, Element, Modifier) 吗?如果是那么怎么办?
我试着给 ClassName
但它不起作用
import { SiteHeader } from './site-header';
export const SiteHeaderStyled = styled(SiteHeader).attrs({
className: 'SiteHeader',
})`
&__nav {
color: red;
}
`;
那是你自己的,你只能使用 styled-components 来定义每个需要样式的节点,或者你可以将两者混合使用:使用 styled-components + 内联样式,styled-components 用于组件容器 + 内部节点的类名(在样式容器中定义样式),甚至根据情况混合使用这 3 种方法。
在任何情况下,如果你坚持使用 styled-component,你就不需要 BEM,因为所有东西至少都只限于 1 个组件
编辑:对您的编辑的回应
什么不起作用? SiteHeaderStyled (.SiteHeader) 或导航子项上的样式 ?
&__nav
不能工作,因为没有parent(在scss代码部分),你必须这样包装:
export const SiteHeaderStyled = styled(SiteHeader).attrs({
className: 'SiteHeader',
})`
.SiteHeader {
&__nav {
color: red;
}
}
`;
使用上面的截图就来了
import { SiteHeader } from './site-header';
export const SiteHeaderStyled = styled(SiteHeader)`
.nav {
color: red;
}
`;