styled-components: all in js

styled-components 是一个给 React 量身定制的一个库,奉行 React 中 all in js 的设计理念,并发挥到极致,让 CSS 也能称为一个个 JS 模块。

使用 styled-components 解决了哪些痛点?

CSS 模块化

尽量降低模块之间的耦合度,利于项目的进一步维护

支持预处理器嵌套语法

可以采用 sass、less 的嵌套语法

export const SearchWrapper = styled.div`
    position: relative;
    float: left;
    .zoom {
        right: 5px;
        &.focused {
            background: #777;
            color: #fff;
        }
    }
`;

让 CSS 代码能够处理逻辑

不仅仅是因为里面的模板字符串可以写 JS 表达式,更重要的是能够拿到组件的上下文信息 state、props

比如:在 React 组件中的 JSX 代码中写了这样一段:

在相应的 style.js 中就能够接受相应的参数:

语义化

前端开发者的毒药,致命一击

可以发现,拆分后的标签基本是在 style.js 里面导出的变量名,完全自定义,这个时候 CSS 都成为了一个个 JS 模块,每个模块相当于一个标签

如:styled.div 已经帮我们创建好了标签

在模块下面完全可以再写 h5 标签,开发方式更灵活

使用方法

基本知识

高级用法

API

开发踩的坑以及目前的缺点

  • 坑:以前的 injectGlobal 已经被弃用,对于全局样式文件需要使用 createGlobalStyle 来进行引入

然后在全局的根组件 APP.js 里面:

最后更新于

这有帮助吗?