reactjs - 具有 PostCSS/CSS 模块的全局实用程序类

标签 reactjs webpack postcss css-modules

使用 CSS Modules , 如何在不复制样式声明的情况下将全局实用程序类应用于多个元素?

例如,这是一个没有 CSS 模块的 React 组件。相关行是包含两个类的 div:widgetclearfix...

/* components/widget.jsx */

class Widget extends Component {
  render() {
    return (
      <div className="widget clearfix">
        <div className="widget-alpha">Alpha</div>
        <div className="widget-beta">Beta</div>
      </div>
    );
  }
}

.clearfix 是一个全局实用程序类,我想将其应用于整个应用程序中的许多元素:

/* util/clearfix.scss */

.clearfix {
  &:before, &:after { content: " "; display: table; }
  &:after { clear: both; }
}

我见过将 .clearfix 导入 CSS 模块的各种方法,但在每种情况下,都会为每次应用该类的事件重新定义样式声明。这是一个示例:

/* widget.scss */

.widget {
  // other styles
  composes: clearfix from '../util/clearfix.scss';
}

最佳答案

通过反复试验,我发现您可以在使用实用程序类的选择器中声明 :global(而不是定义它的地方):

.widget {

  // other styles

  :global {
    composes: clearfix;
  }
}

为了避免困惑和重复的 importfrom 语句,我使用了一个 index.scss 文件来导入实用程序文件,然后导入它在任何需要实用程序类的地方。

关于reactjs - 具有 PostCSS/CSS 模块的全局实用程序类,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34166480/

相关文章:

javascript - mxGraph - 某些形状在 ReactJS 应用程序中无法正确呈现

javascript - React 组件事件处理函数未从 Redux Store 接收到最新值

typescript - TS2307 : Cannot find module '@/*' or its corresponding type declarations

typescript - 无法自动确定 Cesium 基本 URL( typescript )

javascript - postcss 插件是否应该将 postcss 引用为对等依赖项?

javascript - 如何使用 axios 在请求 header 中发送 clientIP

javascript - 如何监听 react.js 中的状态变化?

javascript - 模块构建失败: SyntaxError: Unexpected token error when trying to render a second component

css - 将 calc() 与 $variables 一起使用时的意外术语

javascript - Webpack 没有加载 css