修改器的简单Sass BEM继承

修改器的简单Sass BEM继承,sass,bem,Sass,Bem,我知道这似乎是一个基本的问题,但尽管有很多关于sass和bem的伟大著作,我还是不知道这种继承是如何与嵌套一起工作的。也许这里有人可以澄清一下 例如,具有链接和活动链接的简单导航: .Header { padding: 1rem; &__nav { display: flex; align-items: center; &-link { @include fonts.bold;

我知道这似乎是一个基本的问题,但尽管有很多关于sass和bem的伟大著作,我还是不知道这种继承是如何与嵌套一起工作的。也许这里有人可以澄清一下

例如,具有链接和活动链接的简单导航:

.Header {
    padding: 1rem;


    &__nav {
        display: flex;
        align-items: center;

        &-link {
            @include fonts.bold;
            font-size: 1.15rem;

            &--active {
                color: red;
            }
        }
    }
}
然后这个组件:

const NavLink = props => (
    <Link
        {...props}
        getProps={({ isCurrent }) => ({
            className: isCurrent ? "Header__nav-link--active" : "Header__nav-link",
        })}
    />
);

const Header = () => {
    return (
        <header className="Header">
            <div className="Header__nav">
                <NavLink to="/app/A">PAGE A</NavLink>
                <NavLink to="/app/B">PAGE B</NavLink>
                <NavLink to="/app/C">PAGE C</NavLink>
            </div>
        </header>
    );
};
const-NavLink=props=>(
({
类名:isCurrent?“Header\uu nav-link——活动”:“Header\uu nav-link”,
})}
/>
);
常量头=()=>{
返回(
A页
B页
C页
);
};
问题 未激活的链接-
Header\uuu nav-link
会获得字体设置,但
--active
链接不会。通过将基类与
活动的
一起添加到标记中,这样做是否“正确”


如下所示:
className=“Header\uuu nav-link Header\uu nav-link--active”

是的,正确的方法就是您所描述的。边界元法中的修饰符旨在与块类一起使用,以便以某种方式从基类对其进行修改。仔细想想,修饰符类本身是不可能的,因为它没有定义的要修改的块。

这是有道理的。我只是认为继承可以“吸收”所有下游属性,但事后看来,这没有多大意义。非常感谢。