我是第一次使用 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.css
main-page.module.css
main-page.css
JS-файл
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 模块如何定义多个样式名称