React如何解决样式污染问题

 更新时间:2023年11月14日 10:21:13   作者:埋头敲代码的小前端  
这篇文章主要介绍了React如何解决样式污染问题,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教

react样式污染问题

在vue文件中我们使用scoped来进行css模块化开发,使其样式互不受影响。

但是在react中没有scoped属性, 而react中我们发现css样式设置也存在互相影响的问题。

(例如:改变全局样式,设置的样式不起效果,被其他地方的样式覆盖...)

但在react中可以利用module方法来解决:

(1)改样式文件名。从 xx.css -> xx.module.css (React脚手架中的约定,与普通 CSS 作区分)

(2)将写好的css样式引入到对应组件中。

import styles from "xxx.module.css";

 一般命名为styles

(3) 通过 styles 对象访问对象中的样式名来设置样式

注: 避免一个文件有相同的class名称,只生效一个(最后一个覆盖之前所有的)

解析完的类名是一个哈希串。

// css类名是index.module.scss中定义的类名
<div className={styles.css类名}></div>

(4)注意: css类名中如果有 '-' 则要改为styles[ css类名 ]。因为最终这个类名会生成为styles对象上的一个属性。一般推荐使用小驼峰命名法

react防样式污染小助手-css module

react与vue不同,vue可以通过在script中设置scoped来限制样式的生效范围,不至于样式污染,

CSS 的局部作用域解决了大问题。在w3c 规范中,CSS 始终是「全局的」。在传统的 web 开发中,最为头痛的莫过于处理 CSS 问题。因为全局性,明明定义了样式,但就是不生效,原因可能是被其他样式定义所强制覆盖。接手老项目更是噩梦,改对了一个地方的样式,却把另外许多地方的样式打乱。

CSS modules 是从工具层面给出的一套生成局部 CSS 的规范,本质还是生成全局唯一的 CSS 定义。webpack 实现了这套规范。

1.css modules是默认开启的,所以我们只需要将原先的.less或.css文件名称改为.module.less

例:index.css改为index.module.css

//index.module.css
.app {
  background: red;
}

2.在react的js文件引入:

import index from './index.module.css'

3.使用

    <div className={index.App}>
     123
    </div>

4.

可以看到class是一堆啥玩意的名字,实际上它 是 App--<hash数值>,这个 hash 值是全局唯一的,比如通过文件路径来获得,这样 class 名称就做到了全局唯一。

通过全局唯一的 CSS 命名,我们变相地获得了局部作用域的 CSS(scoped CSS)。

如果一个 CSS 文件仅仅是作用在某个局部的话,我们称这样一个 CSS 文件为 CSS module

总结

以上为个人经验,希望能给大家一个参考,也希望大家多多支持脚本之家。

相关文章

  • 2023年最新react面试题总结大全(附详细答案)

    2023年最新react面试题总结大全(附详细答案)

    React是一种广泛使用的JavaScript库,为构建用户界面提供了强大的工具和技术,这篇文章主要给大家介绍了关于2023年最新react面试题的相关资料,文中还附有详细答案,需要的朋友可以参考下
    2023-10-10
  • hooks中useEffect()使用案例详解

    hooks中useEffect()使用案例详解

    这篇文章主要介绍了hooks中useEffect()使用总结,本文通过实例代码给大家介绍的非常详细,对大家的学习或工作具有一定的参考借鉴价值,需要的朋友可以参考下
    2022-09-09
  • React Native模块之Permissions权限申请的实例相机

    React Native模块之Permissions权限申请的实例相机

    这篇文章主要介绍了React Native模块之Permissions权限申请的实例相机的相关资料,希望通过本文能帮助到大家,需要的朋友可以参考下
    2017-09-09
  • React中使用UEditor百度富文本的方法

    React中使用UEditor百度富文本的方法

    这篇文章主要介绍了React中使用UEditor的方法,小编觉得挺不错的,现在分享给大家,也给大家做个参考。一起跟随小编过来看看吧
    2018-08-08
  • React中的生命周期和子组件

    React中的生命周期和子组件

    这篇文章主要介绍了React中的生命周期和子组件,文章围绕主题展开详细的内容介绍,具有一定的参考价值,感兴趣的小伙伴可以参考一下
    2022-08-08
  • React Component存在的几种形式详解

    React Component存在的几种形式详解

    这篇文章主要给大家介绍了关于React Component存在的几种形式,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2018-11-11
  • React Context源码实现原理详解

    React Context源码实现原理详解

    这篇文章主要为大家介绍了React Context源码实现原理示例详解,有需要的朋友可以借鉴参考下,希望能够有所帮助,祝大家多多进步,早日升职加薪
    2022-10-10
  • react中使用better-scroll滚动插件的实现示例

    react中使用better-scroll滚动插件的实现示例

    滚动在很多地方都可以使用,本文主要介绍了react中使用better-scroll滚动插件的实现示例,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2023-07-07
  • react如何实现一个密码强度检测器详解

    react如何实现一个密码强度检测器详解

    这篇文章主要给大家介绍了关于react如何实现一个密码强度检测器的相关资料,使用这个密码强度器后可以帮助大家提高在线帐号、个人信息的安全性,需要的朋友可以参考下
    2021-06-06
  • 关于react-router中的Prompt组件使用心得

    关于react-router中的Prompt组件使用心得

    这篇文章主要介绍了关于react-router中的Prompt组件学习心得,Prompt组件作用是,在用户准备离开该页面时, 弹出提示, 返回true或者false, 如果为true, 则离开页面, 如果为false, 则停留在该页面,本文结合示例代码介绍的非常详细,需要的朋友可以参考下
    2023-01-01

最新评论