我是React
和 的新手scss
。也许这是一个基本问题,但我认为这真的很奇怪。
我创建了 4 个文件:
组件.js
import React from "react";
import CompStyles from "./component.module.scss";
const Component = (props) => {
console.log(CompStyles["test"], props.className);
return (
<div className={`${CompStyles["test"]} ${props.className}`}>
{props.children}
</div>
);
};
export default Component;
组件.module.scss
.test {
color: red;
}
演示.js
import React from "react";
import DemoStyles from "./demo.module.scss";
import Component from "./Component";
const Demo = (props) => {
return <Component className={DemoStyles["demo"]}>Text</Component>;
};
export default Demo;
演示.module.scss
.demo {
color: green;
}
Component.js
顾名思义,是一个基本组件。我包括Component
作为Demo
in的孩子Demo.js
。他们两个都有他们的scss
文件。
我的意图很明显。我希望覆盖某些款式的Component
,所以通过一个className
道具,Component
并处理这个逻辑Component.js
。但结果是我无法覆盖它。
经过一些研究和谷歌,我知道这是一个scss import priority
问题的原因。运行时Demo.js
,demo.module.scss
正在加载,component.module.scss
稍后会加载。
那么我如何实现覆盖组件样式?我认为这是一个非常基本的要求。
只是进口demo.module.scss后./Component在Demo.js,这样的WebPack将增加demo.module.scss后component.module.scss在编译过的文件。
Demo.js 中的导入顺序参考blow 。
import React from "react";
import Component from "./Component";
import DemoStyles from "./demo.module.scss";
本文收集自互联网,转载请注明来源。
如有侵权,请联系 [email protected] 删除。
我来说两句