CSS模块-从转换中排除类

时间:2018-10-01 14:43:14

标签: css reactjs css-modules

我正在使用CSS模块,到目前为止一切工作都很好。

我们开始将外部UI库与我们自己的库一起使用,因此我正在编写如下组件:

<div className={styles['my-component']}>
   <ExternalUIComponent />
</div>

假设ExternalUIComponent有自己的类,在最终的CSS文件中看起来像external-ui-component,那么如何从css文件中调整此组件样式?下面的示例不起作用:

.my-component {
   font-size: 1em;
}

.my-component .external-ui-component {
   padding: 16px;
   // Some other styling adjustments here
}

3 个答案:

答案 0 :(得分:2)

请不要使用别人建议的内联样式。尽可能远离内联样式,因为它们会导致不必要的重新渲染。

您应该改用global

.my-component {
    :global {
        .external-ui-component {
           padding: 16px;
           // Some other styling adjustments here
        }
    }
}

https://github.com/css-modules/css-modules#usage-with-preprocessors

此外,我建议使用驼峰式样式名称,这是css-modules的首选方式。 因此您的班级名称为:.myComponent { ... }

您可以在代码中将其用作

<div className={ styles.myComponent } >

如果您想添加更多样式,可以使用array.join(' ')语法。

<div className={ [ styles.myComponent, styles.anotherStyle ].join(' ') } >

这更干净!

答案 1 :(得分:0)

您是否尝试过对该组件使用内联样式?

https://reactjs.org/docs/dom-elements.html#style

const divStyle = {
  color: 'blue',
  backgroundImage: 'url(' + imgUrl + ')',
};

function HelloWorldComponent() {
  return <div style={divStyle}>Hello World!</div>;
}

答案 2 :(得分:0)

这是纯 CSS 中的较短形式(即不需要预处理器):

.my-component :global .external-ui-component {
   // ...
}