前言

这是我自己在给基于Next.js的React项目添加样式时遇到的一些问题和想到的解决方案,因为Next.js是对React比较高级的封装,他有着自成体系的解决方案,因此我们在使用antd时很可能会遇到一些莫名其妙的问题网上有一些解决这些问题的轮子,但是不得不说配置起来也是相当费时间的,因此总结一下的话我觉得前台页面最好少用这种样式库,或者使用material design可能坑会少一点。或者使用 umi,与Antd的继承肯定更好些。

开发

开发阶段的一个显著的问题就是除了首屏渲染的组件之外,其他页面第一次加载的时候是没有样式的。这个问题在生产环境中是不存在的,说白了就是next.js中没有使用 params得到动态路由的方式,因此我们切换页面是无法准确的加载。

于是我开始检查是不是动态路由传值时哪里写错了,但是并没有找到,所以我觉得大概率应该是query传值的问题,于是我把这些样式放在index.js当中首屏加载,得到了想要的结果。

产生这样的问题还是有点烦人的,个人觉得应该可以通过按需加载的配置等来解决,但是目前能力不够只能放在首屏。

而且这样的问题在生产环境中其实是不会发生的,所以你也可以不换。

生产

但是这并不意味着生产环境的部署会是一帆风顺。

我在生产环境遇到了一些想要的样式被莫名其妙覆盖的问题,我发现主要有两种。

首先是Antd的样式,凡是被我修改过,使用antd命名的样式在生产环境中是不生效的,不知道为什么,难道是CSS权重发生变化了?

然后是与Antd有关的布局,有部分布局不生效,感觉也是Next与Antd的问题。

解决方式有很多,为了代码更加整洁系统,我们可以把所有用Antd的标识的组件用别的方式实现,比如选择器,或者直接命名className之类的,实在不行还有!important来解决。

总结

最后网页的效果和开发环境还是存在不一致的情况,让我有点纠结是不是应该换种解决方案,umi+antd的方式可能更加合适一点。

其实自己配也行,就是SSR方面有点难解决。

最后Next官方其实带了JSS的解决方案,我个人第一次写稍微复杂的项目,感觉自己的CSS代码组织的很差,还有好多可以优化的地方,而JSS相对来说成本是要低一点的。

目前业界实现的主要有两种,一种是styled-jsx:

export default () => (<div><p>only this paragraph will get the style :)</p>{ /* you can include <Component />s here that includeother <p>s that don't get unexpected styles! */ }<style jsx>{`p {color: red;}`}</style></div>
)

一种是styled-components:

const Title = styled.h1`font-size: 1.5em;text-align: center;color: palevioletred;
`;

后者反响更好一点,当然前者是zeit的东西,可能对 next.js 的支持更好点,我想的是下一个项目试用一下JSS组织代码。

我在使用Next.js, Antd, @zeit/next-css时遇到的一些问题相关推荐

  1. js new Date()不带时分秒时,时间变了 问题解决

    js new Date()不带时分秒时,时间变了 问题解决 参考文章: (1)js new Date()不带时分秒时,时间变了 问题解决 (2)https://www.cnblogs.com/q149 ...

  2. Node.js~ioredis处理耗时请求时连接数瀑增

    关于redis连接数过高的解释 对于node.js开发环境里,使用传统的redis或者使用ioredis都是不错的选择,而在处理大数据请求程中,偶尔出现了连接池( redis服务端的最大可用连接数,默 ...

  3. 获取js里添加的css文件,用JS添加一个css文件

    我在这里发现了一些关于我的问题的问题,但我无法使用它. 通过JS点击它们时我会改变的CSS属性,JQuery的用JS添加一个css文件 Green Red /*$(document).ready(fu ...

  4. [css] 除了可以用js跟踪用户信息外,如果不用js,使用纯css怎么做呢?

    [css] 除了可以用js跟踪用户信息外,如果不用js,使用纯css怎么做呢? 可以利用 css 的伪类 :hover :active :focus 之类的监听用户行为,然后给指定的url 发送请求. ...

  5. js获取html样式属性,js怎么获取指定css属性的值?

    js怎么获取指定css属性的值?下面本篇文章给大家介绍一下.有一定的参考价值,有需要的朋友可以参考一下,希望对大家有所帮助. js怎么获取指定css属性的值? 1.通过dom.style.属性 来获取 ...

  6. Auto.js 控件属性缺失时获取控件

    Auto.js 在控件属性缺失情况下获取控件 群里有很多新人问,各种既没有id也没有text的控件无法获取的问题. 文章目录 Auto.js 在控件属性缺失情况下获取控件 使用环境 一.具体操作 只用 ...

  7. 用js实现的对css的一些操作方法

    用js实现的对css的一些操作方法,集合,方便需要用js控制css的朋友 //获取元素的真实的,最终的CSS样式属性值的函数 function getStyle(elem,name){ if(elem ...

  8. HTML制作手风琴效果,纯js+html和纯css+html制作手风琴效果,css手风琴

    纯js+html和纯css+html制作手风琴效果,css手风琴 本文分享了纯js+html制作手风琴和纯css+html制作手风琴两种效果,供大家参考,具体内容如下 一.纯css+html的手风琴效 ...

  9. 用JS来动态设置CSS样式

    常见的有以下几种 1. 直接设置style的属性  某些情况用这个设置 !important值无效 如果属性有'-'号,就写成驼峰的形式(如textAlign)  如果想保留 - 号,就中括号的形式 ...

  10. JS修改标签的css样式

    JS修改标签的css样式 例:<span id='name'></span> js中修改id为name的span的样式 var name= document.getElemen ...

最新文章

  1. Google AI与Deepmind强强联合,加速神经网络稀疏化进程
  2. 配置阿里巴巴的数据源
  3. [html] HTML5如何监听video的全屏和退出全屏?
  4. python外星人入侵不显示子弹_【Python】python外星人入侵,武装飞船,代码写好后,不显示子弹...
  5. 文章点赞以及取消点赞功能
  6. 递归处理汉诺塔问题(c++/python)
  7. 《Java程序员职场全功略:从小工到专家》连载六:亚洲企业工作模式
  8. 关于空间计量模型中自回归系数大于1的解释
  9. 四、回归分析之线性回归模型构建
  10. 服务器与操作系统的区别是什么,服务器系统和普通用户操作系统有何区别
  11. shell 中柏开机显示efi_公司的中柏笔记本,出现开机无法启动,发出滴滴-滴滴滴-滴的声音(前面的-为停顿),求助大虾们有什么办法解决,谢谢了,我的保修单弄丢了不知道自己能不能解决。...
  12. idea toggle offline mode
  13. linux ps命令 详细介绍
  14. 数组题目:全局倒置与局部倒置
  15. spring boot 项目 事务 不能回滚 代理(not eligible for auto-proxying)
  16. 抗混叠滤波器及其使用
  17. open write read 函数
  18. 实现倒计时的几种方案汇总
  19. 计算机研讨会通讯录,中国科学院研究生院计算机科学与技术学术研讨会稿件评审.doc...
  20. 【需求与供给】10张图解概念与关系

热门文章

  1. Python关于节假日的一些处理
  2. c# mysql分页_c#-数据库分页查询
  3. Java 基础知识总结—String 类
  4. 智能驾驶的狂想与现实落地
  5. python 复数的模_如何使用abs在python中返回复数?
  6. 打印纸张尺寸换算_纸张尺寸对照表
  7. usb接口供电不足_分享电脑usb接口供电不足解决方法
  8. Android原生态实现分享转发功能(分享图片到其他APP)
  9. 《墨菲定律》读书笔记
  10. 3dsmax VRay分布式渲染