likes
comments
collection
share

从零开始React系列: React引入css的几种方式

作者站长头像
站长
· 阅读数 81

前言

在react中,有几种不同的方式可以引入css样式。这些方式有各自的优缺点,适用于不同的场景。本文将介绍三种常见的方式:普通的css文件,css模块和styled-components。

方案介绍

css文件引入

普通的css文件是最简单的方式,就是在react组件中直接引入css文件,例如:

import React from 'react';  
import './App.css';  
  
function App() {  
return (  
<div className="App">  
<h1>Hello, world!</h1>  
</div>  
);  
}  
  
export default App;  

这种方式的好处是简单易用,不需要额外的配置或依赖。但是也有一些缺点,比如:

  • css文件和react组件是分离的,不利于组件化开发和复用。
  • css文件中的类名可能会发生冲突,导致样式覆盖或混乱。
  • css文件中不能使用react的状态或属性来动态改变样式。

css模块引入

css模块是一种解决类名冲突的方式,它可以让每个组件拥有独立的作用域,避免全局污染。使用css模块,需要将css文件命名为[组件名].module.css,例如:

import React from 'react';  
import styles from './App.module.css';  
  
function App() {  
return (  
<div className={styles.App}>  
<h1 className={styles.title}>Hello, world!</h1>  
</div>  
);  
}  
  
export default App;  

这种方式的好处是可以保证类名的唯一性,避免冲突。但是也有一些缺点,比如:

  • css模块仍然是分离的文件,不利于组件化开发和复用。
  • css模块需要特定的命名规则和配置,不够灵活。
  • css模块仍然不能使用react的状态或属性来动态改变样式。

styled-components引入

styled-components是一种将css和react组件结合在一起的方式,它可以让我们在js文件中直接写css代码,例如:

import React from 'react';  
import styled from 'styled-components';  
  
const StyledApp = styled.div`  
display: flex;  
align-items: center;  
justify-content: center;  
height: 100vh;  
`;  
  
const StyledTitle = styled.h1`  
color: ${props => props.color || 'black'};  
`;  
  
function App() {  
const [color, setColor] = React.useState('black');  
  
const handleClick = () => {  
setColor(color === 'black' ? 'red' : 'black');  
};  
  
return (  
<StyledApp>  
<StyledTitle color={color} onClick={handleClick}>Hello, world!</StyledTitle>  
</StyledApp>  
);  
}  
  
export default App;  

这种方式的好处是可以实现组件化开发和复用,也可以使用react的状态或属性来动态改变样式。但是也有一些缺点,比如:

  • styled-components需要安装第三方库,并且需要学习新的语法和规范。
  • styled-components可能会影响性能和调试,因为它会在运行时生成和注入样式。
  • styled-components可能会导致样式和逻辑混杂在一起,不利于代码的可读性和维护性。

总结

综上所述,react中引入css的方式有多种选择,没有绝对的好坏,只有适合不适合。我们应该根据项目的需求和特点,选择合适的方式来实现我们想要的效果。

转载自:https://juejin.cn/post/7225124223097700409
评论
请登录