Javascript 在React as:import';中使用sass/附录scss';;

Javascript 在React as:import';中使用sass/附录scss';;,javascript,sass,preact,Javascript,Sass,Preact,我正在使用preact cli生成项目,并可以修改网页包配置 我想使用以下格式将样式导入到我的组件中 // Component.scss .component { width: 100px; height: 100px; background: red; } // Component.jsx import './style.scss'; const Component = () => ( <div className="component"> </div&

我正在使用preact cli生成项目,并可以修改网页包配置

我想使用以下格式将样式导入到我的组件中

// Component.scss
.component {
 width: 100px;
 height: 100px;
 background: red;
}


// Component.jsx
import './style.scss';

const Component = () => (
 <div className="component">
 </div>
)
export default Component

//Component.scss
.组成部分{
宽度:100px;
高度:100px;
背景:红色;
}
//Component.jsx
导入“/style.scss”;
常量组件=()=>(
)
导出默认组件
使用.scss样式设置组件样式…

根据preact cli的设置,您应该在preact应用程序文件夹中运行以下命令:

npm install --save-dev node-sass sass-loader
编辑:

我知道你做错了什么。您必须使用以下样式:

样式。scss

.test{
背景:红色;
}
header.js

从“/style.scss”导入样式;
常量头=()=>(
预演应用程序
);
导出默认标题;
你为什么要这样做? 因为它是捆绑的。每个样式都将转换为唯一的名称。例如,
.test
将是
.test\u某物

因此,在任何其他组件中使用类名
.test
都不会有问题

将其视为组件的沙箱。

根据preact cli的说明,您应该在preact应用程序文件夹中运行以下命令:

npm install --save-dev node-sass sass-loader
编辑:

我知道你做错了什么。您必须使用以下样式:

样式。scss

.test{
背景:红色;
}
header.js

从“/style.scss”导入样式;
常量头=()=>(
预演应用程序
);
导出默认标题;
你为什么要这样做? 因为它是捆绑的。每个样式都将转换为唯一的名称。例如,
.test
将是
.test\u某物

因此,在任何其他组件中使用类名
.test
都不会有问题


把它想象成组件的沙箱。

当我试图在
src/components
上的组件上导入类似于preact项目的css/scss文件时,我遇到了同样的问题。似乎从
src/components
文件夹导入的css/scss文件被视为css模块(如上所述),可以在Filip Lintner的回答中使用

一种解决方案是通过在项目根目录中创建
preact.config.js
来定制preact cli,并修改原始的webpack配置以禁用作为CSS模块的绑定(其中类名称被散列)。在我的例子中,这就是我如何在
preact.config.js
中配置webpack以仅禁用散列(最初的两行配置代码段):


有关自定义preact cli的更多信息:

我在
src/components
的组件上尝试导入css/scss文件时遇到了相同的问题。似乎从
src/components
文件夹导入的css/scss文件被视为css模块(如上所述),可以在Filip Lintner的回答中使用

一种解决方案是通过在项目根目录中创建
preact.config.js
来定制preact cli,并修改原始的webpack配置以禁用作为CSS模块的绑定(其中类名称被散列)。在我的例子中,这就是我如何在
preact.config.js
中配置webpack以仅禁用散列(最初的两行配置代码段):


有关自定义preact cli的详细信息:

这并不能解决问题。我希望能够加载样式并将它们映射到我的组件的类名。我可以很好地导入sass文件,但如果我这样做的话,`body{background:red;}。component{background:black;}`。components的背景不会是黑色的,我只是试了一下;首先,我做了
preact创建默认stackoverflow测试
,然后是npm install命令作为响应。将
/src/routes/home.css
更改为
.scss
,将
index.js
内部的导入更改为
导入“/style.scss”
(还有“从“/style.scss”导入样式”的工作方式相同)。然后它就开始工作了。再补充一句——我不明白为什么一些小孩的身体部件需要改变你的身体道具。每个组件都必须关心自己。没有改变/变异它以外的任何东西:)我只是更新了答案,只是看到了你的使用示例中的错误部分。你不明白。。。我不想这样做,我想通过匿名引用来使用我的样式。这并不能解决问题。我希望能够加载样式并将它们映射到我的组件的类名。我可以很好地导入sass文件,但如果我这样做的话,`body{background:red;}。component{background:black;}`。components的背景不会是黑色的,我只是试了一下;首先,我做了
preact创建默认stackoverflow测试
,然后是npm install命令作为响应。将
/src/routes/home.css
更改为
.scss
,将
index.js
内部的导入更改为
导入“/style.scss”
(还有“从“/style.scss”导入样式”的工作方式相同)。然后它就开始工作了。再补充一句——我不明白为什么一些小孩的身体部件需要改变你的身体道具。每个组件都必须关心自己。没有改变/变异它以外的任何东西:)我只是更新了答案,只是看到了你的使用示例中的错误部分。你不明白。。。我不想这样做,我想通过匿名引用来使用我的样式。