我是第一次使用 ReactJS,问题出现了:如何根据页面动态更改 CSS 文件?
例如,我有一个文件:main.css和about.css.
进入页面时需要/交朋友main.css,并且/about- about.css。
我在 filesMain.js和 in 中导入 css 文件About.js,当我选择一个页面时,我会得到所有 css 文件(main.css+ about.css),但我不需要所有文件。下图显示加载了 4 个文件(Google Font + main.css+ 2 次加载about.css),但应该有 2 个文件(Google Font + main.css)。
网上写了一些关于 的东西bundle-action,但我不明白如何解决这个问题。
代码示例:
import React, {Component} from 'react';
import {BrowserRouter as Router, Switch, Route} from 'react-router-dom';
import Head from "./components/Head";
import Main from './components/Main';
import About from './components/About';
class App extends Component{
render() {
return (
<Router>
<Head/>
<Switch>
<Route path="/" exact>
<Main/>
</Route>
<Route path="/about">
<About/>
</Route>
</Switch>
</Router>
);
}
}
export default App;
main.js 和 about.js
import React, {Component} from 'react';
import '../css/main.css';
class Main extends Component {
render() {
return (
//некоторый код
);
}
}
export default Main;
import React, {Component} from 'react';
import '../css/about.css';
class About extends Component {
render() {
return (
//некоторый код
);
}
}
export default About;

在这种情况下,最好的解决方案是使用 [CSS-modules]。一
该技术允许您使用单个 css 文件,这使您可以摆脱多个文件的导入(但是,您可以将多个文件导入到一个组件中,但最好不要这样做)。
需要做什么:
CSS-файл结尾的名称创建,而不仅仅是.module.cssmain-page.module.cssmain-page.cssJS-файлasimport styles from '/путь/к/файлу/ИМЯ.module.css'styles带有类名的 html 代码示例:
单类
<div className={styles.dish}> ... </div>调用:多类
<h2 className={[styles.text, styles.text_headerMedium, styles.text_italic].join(" ")}>Имя</h2>调用:多类调用(选项 2):
<div className={`${styles.description} ${styles.yellow}\`}>camelCase:blockName__elemName_modName_modVal有用的链接:
YouTube - 如何在 CREATE-REACT-APP
BEM 中使用 CSS 模块 - 命名约定
SO - 使用 css 模块如何定义多个样式名称