活动状态下的 React Bootstrap 组件样式

won*_*erv 3 sass reactjs react-bootstrap

我正在尝试设计 React Bootstrap 导航栏的样式。我能够成功地设置非活动选项卡的样式,但是,我似乎无法到达活动选项卡。我的实时样式是一个单独的 .scss 文件。这是相关的片段:

.navitem {
  a {
    font-size: 12px;
    color: #000;
    background-color: #e7e7e7;
    -webkit-border-radius: 0;
    -moz-border-radius: 0;
    border-bottom-color: #357ebd;
    border-bottom-style: solid;
    border-radius: 0px !important;
    display: inline-block;
    border-bottom-width: 2px;
  }
  flex: 1;
}

.navitem.active {
  background-color: #777777;
}
Run Code Online (Sandbox Code Playgroud)

创建活动 Bootstrap 组件后,其 HTML 如下所示:

<li role="presentation" class="Preview-navitem--19fA7 active"><a role="button" href="#">Preview</a></li>
Run Code Online (Sandbox Code Playgroud)

这是 React render() 方法中的 HTML:

<Nav
            className={styles.navbar}
            bsStyle="pills"
            activeKey={this.state.value}
            onSelect={this.handleSelect}
          >
            <NavItem className={styles.navitem} eventKey="1">Preview</NavItem>
            {navItem}
</Nav>
Run Code Online (Sandbox Code Playgroud)

所以,基本上,我可以设置 .navitem 的样式,但不能设置 .active 的样式。知道我怎样才能做到这一点吗?

Jam*_*ong 5

假设这是 CSS 模块,它看起来像是基于粘贴的代码,解决方案是使用全局选择器。CSS Modules 在 README 主页面的Exceptions下简要提到了这一点。然而,他们的webpack 演示有一个全局选择器示例,您可以克隆和使用。

简而言之,你应该改变:

.navitem.active {
  background-color: #777777;
}
Run Code Online (Sandbox Code Playgroud)

到:

.navitem:global(.active) {
  background-color: #777777;
}
Run Code Online (Sandbox Code Playgroud)

以便 Webpack 能够正确处理它。这应该就是所需要的一切!