Вы можете изменить конфигурацию веб-пакета, чтобы убедиться, что CSS становится компонентным.
Посмотрите, когда веб-пакет связывает, он берет ваш файл CSS и добавляет его в один файл CSS или если вы используете style-loaderзатем он добавляет в ваш заголовок. Так как CSS ничего не знает о вашем компоненте, мы должны убедиться, что класс CSS, который у вас есть для вашего компонента, ограничен только для вашего компонента.
Так как же нам этого добиться?
Мы добавляем хэш или какое-то уникальное значение к имени вашего класса, чтобы гарантировать, что класс wrapper , определенный в Header.css , отличается от wrapper в Navbar.css .
Как мы это делаем:
в вашем конфигурационном файле веб-пакета, где вы тестируете css , который вы можетепросто добавьте css-загрузчик следующим образом:
test: /\.(s?)css$/,
use: [
'style-loader',
'css-loader',
]
измените его на:
test: /\.(s?)css$/,
use: [
'style-loader',
{
loader: 'css-loader',
options: {
importLoaders: 1,
modules: true,
localIdentName: '[name]__[local]__[hash:base64:5]',
},
}
Here modules: true сообщит веб-пакету, что каждый файл css / scss следует рассматривать как модуль дляубедитесь, что он добавляет хэш. localIdentName: '[name] __ [local] __ [hash: base64: 5]', предоставит формат хэша, иначе wepack выдаст свой собственный хэш и заменит вам имя класса.