styled-components真的好吗?
最近在学习react,然后遇到react中css该怎么写这个问题,上知乎上看了好多大牛都说styled-components好用是大势所趋。
但我自己用了感觉体验却很差,我在这里说说我为啥觉得styled-components不好用。
1.既然用了styled-components,那除了引用全局的css,还要引用组件的css吗?如果用了,干嘛不把组件的样式全部写到组件的css文件中呢?
好吧,如果不引用css,全靠styled-components来写的话,我给大家看一下代码
render() {
return (
<HeaderWrap>
<HeaderContainer>
<LogoArea>
<h1>Mask的弹幕网站</h1>
<p style={{fontSize:30+"px",marginTop:10+"px"}}><LogoArrow></LogoArrow>记录生活,不忘初心</p>
</LogoArea>
<LoginPanel>
<p onclick={this.showLoginBox}>登录</p>
<p onclick={this.showRegisterBox}>注册</p>
</LoginPanel>
<UserPanel>
<UserFigure>
<p><UserIcon src={this.props.userIconUrl} alt="user-figure"/></p>
<p>{this.props.userName}</p>
</UserFigure>
<UserMenu>
<UserOption>投稿</UserOption>
<UserOption>空间</UserOption>
<UserOption>注销</UserOption>
</UserMenu>
</UserPanel>
</HeaderContainer>
</HeaderWrap>
);
}
上面的代码是我写的网页的一个header的代码,我是想把它封装成组件的。但是sass里面的嵌套的写法也不好使了,明明一个嵌套就搞定的事情,反而要定义两个组件。可以看到几乎所有容器都被用styled-components来定义了,styled-components的原理就是创建一个react里的component,但实际上有些容器所对应的样式可能就1、2条,也要调用构造函数创建对象,我是觉得这样很浪费资源,工作量也上升了。
2.styled-components写完之后你不知道html元素是啥,ok,上面的例子你知道每个标签对应html什么元素吗?你不知道。可读性很差
3.在js里写css没有自动补全,样式是在js里的标签模板里写的,所以没有自动补全。可能可以设置吧,但我不会,写css没有补全真的累。。
4.生成的html可读性也很差

这是生成的html文档,可以看到每定义一个styled-component就会随机生成一个class来绑定你定义的样式,你看这些class根本不知道绑定的样式是什么作用,自己写css的时候还是有一些语义上的定义的,比如clearfix
我就用了2天就感觉难受的不行,看了http://www.sohu.com/a/153351371_463987这篇文章,感觉很有共鸣,反正我是觉得styled-components真的不好用,大家看自己的个人喜好吧
styled-components真的好吗?的更多相关文章
- styled components草根中文版文档
1.styled components官网网址 https://www.styled-components.com/docs 以组件的形式来写样式. 1.1安装 yarn add styled-c ...
- 6周学习计划,攻克JavaScript难关(React/Redux/ES6 etc.)
作者:余博伦链接:https://zhuanlan.zhihu.com/p/23412169来源:知乎著作权归作者所有.商业转载请联系作者获得授权,非商业转载请注明出处. 和大家一样,最近我也看了Jo ...
- 大前端的自动化工厂(2)—— SB Family
原文链接:https://bbs.huaweicloud.com/blogs/53c0c3509b7a11e89fc57ca23e93a89f 我坦白我是标题党,SB只是SCSS-Bourbon的简写 ...
- 全面系统讲解CSS工作应用+面试一步搞定
[TOC] 一.课程介绍 二.HTML基础强化 html常见元素和理解 html常见元素分类 head区元素:(不会在页面上留下元素) * meta * title * style * link * ...
- 使用styled-components实现CSS in JS
前面的话 使用jsx语法可以实现HTML in JS,使用svgr可以实现svg in JS,使用styled-components可以实现CSS in JS.这样,使用react开发,就变成了使用J ...
- Next.js v4.1.4 文档中文翻译【转载】
最近想稍稍看下 React的 SSR框架 Next.js,因为不想看二手资料, 所以自己跑到 Github上看,Next.js的文档是英文的,看倒是大概也能看得懂, 但有些地方不太确定,而且英文看着毕 ...
- CSS Overrides: Friend or Foe?
转自:http://www.callumhart.com/blog/css-overrides-friend-or-foe Anyone familiar with CSS will know how ...
- 9 CSS in JS Libraries You Should Know in 2018
转自:https://blog.bitsrc.io/9-css-in-js-libraries-you-should-know-in-2018-25afb4025b9b 实际上 wix 的 styl ...
- 推荐 9 个样式化组件的 React UI 库
简评:喜欢 CSS in JS 吗?本文将介绍一些使用样式组件所构建的 React UI 库,相信你会很感兴趣的. 在 React 社区,对 UI 组件进行样式化的讨论逐步从 CSS 模块到内联 CS ...
- The Road to learn React书籍学习笔记(第一章)
react灵活的生态圈 Small Application Boilerplate: create-react-app Utility: JavaScript ES6 and beyond Styli ...
随机推荐
- java.lang.NoClassDefFoundError: Lcom/opensymphony/xwork2/util/logging/Logger tomcat6 启动错误
用tomcat6启动时,出现下面的错误Java.lang.NoClassDefFoundError: Lcom/opensymphony/xwork2/util/logging/Logger; Cau ...
- php面试必知必会常见问题
1 说出常用的10个数组方法 我觉得数组比较最能体现PHP基础语法的一个数据结构了,下面给大家列一下常用的10个关于操作数组的函数 in_array(判断数组中是否有某个元素) implode(将数组 ...
- LBP纹理特征[转自]
LBP方法(Local binary patterns)是一个计算机视觉中用于图像特征分类的一个方法.LBP方法在1994年首先由T. Ojala, M.Pietikäinen, 和 D. Harwo ...
- CF486D-Valid Sets
题目 给出一个\(n\)个点的树,每个点有权值\(a_i\),再给出一个\(d\),问有多少个非空点集满足: 点集在树上构成联通子图 \[\max _{v\in S}a_v -\min _{v\in ...
- BZOJ 2157 旅行(树链剖分码农题)
写了5KB,1发AC... 题意:给出一颗树,支持5种操作. 1.修改某条边的权值.2.将u到v的经过的边的权值取负.3.求u到v的经过的边的权值总和.4.求u到v的经过的边的权值最大值.5.求u到v ...
- vue项目 axios封装第二弹
import axios from "axios"; import qs from "qs"; import { Message, MessageBox } f ...
- 洛谷 P3258 [JLOI2014]松鼠的新家
树剖,裸题,鉴定完毕. 我是题面 读完题,恩,树剖,裸题,没劲. 处理很简单,既然每到一个房间吃一块糖,那么就在每条路径上的每个房间放一颗糖,但是每条路径的终点也就是下一条路径的起点,在这里只能加一次 ...
- 在Linux上编译使用tcmalloc
项目需要使用tcmalloc,比较简单的方法是安装tcmalloc相关包(gpertools)后,将tcmalloc的静态库提取出来,在编译项目内核(执行makefile)时,链接上静态库即可. 这里 ...
- Ulipad和有道词典冲突解决方法
问题现象 Ulipad和目前版本的有道词典有冲突,表现为先开有道词典,Ulipad就无法运行. 解决方法 找到Ulipad安装目录下的config.ini,添加以下两行: [server] port= ...
- 【刷题】BZOJ 4199 [Noi2015]品酒大会
Description 一年一度的"幻影阁夏日品酒大会"隆重开幕了.大会包含品尝和趣味挑战两个环节,分别向优胜者颁发"首席品酒家"和"首席猎手&quo ...