我刚开始使用React,但之前有一些网络背景。
我有一个默认组件,比如.title
,我想覆盖它的一些内容,可能是background-color
或font-size
,用于它在这个特定页面中的情况。
在";正常的";web,我只需编写一个类.special-page .title
或.title.special-version
并覆盖我想要的内容。
据我所知,由于react的模块CSS系统,这是不可能的。我正在使用scss
,我甚至不能使用嵌套类,这很痛苦,但我已经习惯了
正确的方法是什么?
我尝试了classNames
和cn(defaultStyle.title, styles.special_title)
,但基于import
的顺序和cn
中的类的顺序来表示css类中的哪一个的优先级似乎是随机的。
有没有一种可靠的方法可以让一个类修改基本类,而不必到处放!important
?
谢谢!
我猜您对css模块的解释不正确。您在module.css中定义的所有类都只会影响相应的组件。这是因为在呈现组件时,react采用您定义的类名,并通过在其上添加哈希来操纵它们(使其特定于组件(。要使用通用类名,请将css作为常规导入导入(不是作为module.css,而是作为filename.css(。如果您在index.js或app.js 中使用placc,则通用css类将在整个应用程序中可用
现在,您可以在泛型css中定义您的.title
,在模块中定义.special-version
。然后在类名中使用它们作为常规的htmltitle special-version
。它将同时采用.title
样式和.special-version
样式。将要覆盖的规则放在.special-version
中