【发布时间】:2018-04-15 21:05:35
【问题描述】:
我有几个具有以下 CSS/组件结构的组件
About/style.css
.AboutContainer {
# Some style
}
p > code {
# Some style
}
我在组件中导入 CSS 如下
About/index.js
import './style.css';
export default class About extends Component {
render() {
# Return some component
}
}
但是,CSS 被导入 <header> 部分并保持全局范围。
我期待 CSS 是:
- 组件范围内的样式仅应用于仅在此组件内呈现的内容。
- 如果卸载该组件,该组件的样式将会消失。
但是,当从浏览器检查时,样式在 <header> 部分指定并应用于所有组件
<header>
// Stuff
<style type="text/css">style for component About</style>
<style type="text/css">style for component B</style>
<style type="text/css">style for component C</style>
// Stuff
</header>
如何将 CSS 导入组件范围?似乎我对 React ES6 中的 CSS 导入理解不正确。
我在关注this tutorial
编辑
布雷特的回答是正确的。但是,我的问题原来在其他地方。我使用create-react-app 创建了我的应用程序,它基本上简化了执行 React 所需的设置。它包括 WebPack、Babel 和其他上手的东西。它使用的默认 WebPack 配置没有为css-loader 设置module option,因此它默认为false,因此未启用本地范围。
只是为了获得更多信息,create-react-app 似乎没有直接的方法来自定义 WebPack 配置,但似乎在网络上有很多方法解决方法。
【问题讨论】:
-
看看 CSS 模块 - github.com/css-modules/css-modules
-
Stackoverflow 出现了问题,当“这个闪亮的库解决了您的问题”回答了一个精心制定的问题时,没有解决问题。该问题已更新为正确答案(感谢@Harry Cho!),但获得零赞成票。
-
你可以使用 css 模块和 create-react-app 而不根据这个博客弹出:robinwieruch.de/create-react-app-css-modules
-
将 mystyle.css 重命名为 mystyle.module.css 并将其导入以在使用
create-react-app创建的 react 应用程序中使用 css 模块