在React中组件如何使用本地的样式,而不对其他组件产生影响呢?我们这里需要使用样式的模块化处理,使得组件的样式只在该组件内部起作用。
这里我们通过两个组件应用说明。
定义组件
- 定义Hello组件与自定义样式
Hello/index.css
.title{ color:red; }
Hello/index.jsx
import {Component} from "react" import "./index.css" export default class Hello extends Component { render(){ return <h1 className="title">Hello World</h1> } }
- 定义Welcome组件与自定义样式
Welcome/index.css
.title{ color:green; }
Welcome/index.jsx
import { Component } from "react"; import "./index.css" export default class Welcome extends Component{ render(){ return <h2 className="title">Welcome</h2> } }
- 引入组件大到App容器
import { Component} from "react" import Hello from "./components/Hello" import Welcome from "./components/Welcome" export default class App extends Component { render() { return (<div>App <Hello/> <Welcome/> </div>) } }
- 查看效果
从上图我们看到字体颜色中我们的Hello World
应该是红色,但是确实绿色,这是因为两个组件都被引入到了App
容器里面,以致于css
样式被覆盖了。
改造样式模块化
步骤1:请在CSS
文件中使用:local
关键字来定义本地作用域的样式。
:local .title { color: green; }
步骤2:修改样式文件名称
index.css
===> index.module.css
步骤3:修改样式引入方式
import welcomesty from "./index.module.css"
步骤4:修改类名使用方式
import { Component } from "react"; import welcomesty from "./index.module.css" export default class Welcome extends Component{ render(){ return <h2 className={welcomesty.title}>Welcome</h2> } }
步骤5:查看效果
从上图可以看到,组件的字体颜色都是其内部样式文件定义的,并没有被覆盖,说明我们的样式模块化已经生效。
总结
在React
中,可以使用CSS
模块来为组件添加样式。要使用CSS
模块,请在CSS
文件中使用**:local
关键字**来定义本地作用域的样式。例如,以下CSS
代码将定义一个本地作用域的样式:
:local .myClass { color: red; }
然后,在React
组件中,可以使用import
语句将CSS
模块导入组件中,并使用className
属性将样式应用于组件。例如,以下代码将导入名为styles
的CSS
模块,并将其应用于MyComponent
组件:
import styles from './path/to/styles.module.css'; function MyComponent() { return ( <div className={styles.myClass}> Hello World! </div> ); }
在这个例子中,styles.myClass
将被解析为一个唯一的类名,以确保样式只应用于MyComponent
组件。
注意:这里的css
样式文件名后缀是:.module.css