type
status
date
slug
summary
tags
category
icon
password
如何在 React 中使用 styled-components
styled-components 是一个流行的 CSS-in-JS 库,能够让你以组件化的方式编写样式,提升开发效率和代码的可维护性。本文将详细介绍 styled-components 的使用方法。一、什么是 styled-components?
styled-components 是一个基于 tagged template literals(模板字符串标签)的库,它允许你在 JavaScript 代码中直接写 CSS。通过创建具有封装样式的 React 组件,让样式逻辑与 UI 逻辑紧密结合。安装方式:
或:
注意:对于 TypeScript 项目,还需安装类型声明包:
二、CSS-in-JS 的发展与背景
传统的 CSS 文件维护较为分散,难以做到真正的“样式隔离”。CSS 模块化的方式有很多演进,如:
- 传统全局 CSS / SCSS
- BEM 命名规范
- CSS Modules
- CSS-in-JS(如 styled-components、emotion)
CSS-in-JS 的优势是样式完全跟随组件走,天然具备作用域隔离,减少命名冲突,提升可维护性。
三、styled-components 基本使用
创建一个样式组件
动态样式(props 支持)
样式继承与组合
嵌套选择器
四、主题功能(ThemeProvider)
styled-components 支持主题上下文,非常适合做暗黑模式等主题切换:
五、全局样式与动画支持
全局样式
动画
六、优点与缺点分析
✅ 优点
- 样式隔离:自动作用域,无需担心 class 冲突。
- 强大的动态样式能力:可基于 props / 主题动态生成样式。
- 组件化开发体验更佳:逻辑和样式紧密结合。
- 支持 TypeScript、服务器渲染(SSR)等现代特性。
❌ 缺点
- 运行时依赖更大:相比纯 CSS,styled-components 增加了运行时代码。
- 学习曲线:对初学者可能较难理解模板字符串 + 动态样式。
- 构建性能影响:由于 CSS 在 JS 中,可能影响构建速度和首屏渲染。
七、适用场景建议
适合:
- 组件粒度较细、样式变动频繁的项目。
- 有主题切换、复杂动态样式需求的应用。
- 偏向模块化、可维护性优先的团队。
不适合:
- 对性能极致敏感的项目(如广告页、H5 页面)。
- 习惯传统 CSS / SCSS 流程的团队。
结语
styled-components 是一个功能强大的 CSS-in-JS 库,极大提升了样式与组件的整合能力。虽然存在一定运行时开销,但它带来的开发体验和可维护性,是许多中大型 React 应用的首选方案。
- 作者:wdkang
- 链接:https://blog.wdkang.com/article/styled-components
- 声明:本文采用 CC BY-NC-SA 4.0 许可协议,转载请注明出处。





.png?table=block&id=1ee896c5-9558-8082-9649-e66950102aad&t=1ee896c5-9558-8082-9649-e66950102aad)




