在学习react过程中发现,无论哪个组件引入的css文件都会被全局使用,样式之间会相互影响,会被层叠掉,所以需要借助styled-components来管理单个组件的样式
styled-components的本质是通过函数的调用,最终创建出一个组件:
1.这个组件会被自动添加上一个不重复的class
2.styled-components会给该class添加相关的样式
3.支持直接子代选择器或后代选择器,并且直接编写样式
4.支持样式的继承
安装:
npm install --save styled-components
用法:
目录结构

index.js
import { Text } from './style.js'
const App = () => {
return(
<div>
<h3>styled-components</h3>
<Text>
我是Text组件渲染出来的
</Text>
</div>
)
}
export default App;
style.js
import styled from 'styled-components' export const Text = styled.div` color: red; `;
备注:这个dome是使用styled-components创建的样式组件,渲染之后是div标签。组件首字母必须大写不然无法识别。
渲染结果:

选择器:标签名和类名
import { Text } from './style.js'
const App = () => {
return(
<div>
<h3>styled-components</h3>
<Text>
我是Text组件渲染出来的
<p>react真好用</p>
<span>我爱学习</span>
<h5 className="title">学习使我快乐</h5>
</Text>
</div>
)
}
export default App;
style.js
import styled from 'styled-components'
export const Text = styled.div`
color: red;
p {
color: blue;
}
span{
color: aquamarine;
font-size: 20px;
}
.title{
font-weight: 700;
color: #333;
}
`;

选择器:伪类和伪元素
import { Text } from './style.js'
const App = () => {
return(
<div>
<h3>styled-components</h3>
<Text>
鼠标放上后变成红色
</Text>
</div>
)
}
export default App;
style.js
import styled from 'styled-components'
export const Text = styled.div`
color: #333;
:hover{
color: red;
}
`;


从DEMO上看,styled-components其实和传统的css写法差不多,不过没有代码提示就很烦人了,给小伙伴们安利一个vscode插件,vscode-styled-components

安装完成后代码提示和语法高亮就出来了,写起来容易多了~
