在反应中覆盖另一个组件的样式

Overwrite styles of a component inside another in react

我有一个组件有自己的样式:

从“./componentA.module.scss”导入样式;

componentA.module.scss:

.A { color: green;
     background: white;
     font-size: 1rem;}

ComponentA.js

....
return(
   <div className={styles.A}>{props.children}</div>
)

我有一个ComponentB.js。在这个组件B中我需要组件A,但是我需要覆盖样式颜色。

ComponentB.js

...
import ComponentA from './../componentA';
import styles from 'componentB.module.scss';
...
return(
<ComponentA />
)

但我想在组件 B 中将颜色覆盖为 class.A。我在 componentB.module.scss 中尝试这样做,但没有改变。

componentB.module.scss

.A {
 color: red !important;
}

它不起作用我希望能够根据包装的组件覆盖样式。我该怎么做?谢谢

您必须通过 props 传递组件 A 样式,然后应用到包装器 div

const ComponentA = (props) => {

  return(
    <div className={styles.A} styles={props.cssStyles}>{props.children}</div>
    )
  }

然后

import ComponentA from './../componentA';
import styles from 'componentB.module.scss';
...
return(
<ComponentA cssStyles={{color: "red"}} />
)

您也可以将类名作为 props 传递,然后通过此包合并默认类名和 props 类名 https://www.npmjs.com/package/classnames