0

我知道这似乎是一个基本问题,但是尽管有很多关于 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>
    );
};

问题

未激活的链接 -Header__nav-link获取字体设置但--active链接没有。通过将基类与标记一起添加来执行此操作是“正确”的方法active吗?

像这样:className="Header__nav-link Header__nav-link--active"

4

1 回答 1

1

是的,正确的方法就是你描述的。BEM 中的修饰符旨在与块类一起使用,以某种方式从基础更改它。如果您考虑一下,修饰符类不能单独存在,因为它没有定义的要修改的块。

于 2020-08-19T23:49:07.700 回答