广告
返回顶部
首页 > 资讯 > 前端开发 > JavaScript >React样式冲突解决问题的方法
  • 768
分享到

React样式冲突解决问题的方法

React样式冲突React样式 2023-03-10 14:03:12 768人浏览 泡泡鱼
摘要

目录前言:CSS IN js一、概念二、CSS Modules三、在项目中使用css Modules四、css module配合sass五、module.scss 使用步骤:六、总结

前言:

1、React最终编译打包后都在一个html页面中,如果在两个组件中取一样类名分别引用在自身,那么后者会覆盖前者
2、默认情况下,只要导入了组件,不管组件有没有显示在页面中,组件的样式就会生效。

解决方案:

  • 手动处理 (起不同的类名,但是项目一大就会导致类名很乱,不利于团队协作)
  • CSS IN JS以js的方式来处理css(推荐)
  • css不是一门编程语言,css没有所有的局部作用域全局作用域这样的区分。。。css只有全局作用域

CSS IN JS

一、概念

CSS IN JS:是使用 javascript 编写 CSS 的统称,用来解决 CSS 样式冲突、覆盖等问题

CSS IN JS 的具体实现有 50 多种,比如:React常用(CSS Modules、styled-components)、 Vue常用(<style scoped>css modules)等

推荐使用:CSS Modules (React脚手架已集成,可直接使用

二、CSS Modules

  • CSS Modules 通过对 CSS 类名重命名,保证每个类名的唯一性,从而避免样式冲突的问题
  • 换句话说:所有类名都具有“局部作用域”,只在当前组件内部生效
  • 在 React 脚手架中:文件名、类名、hash(随机)三部分,只需要指定类名即可 BEM
  • xxxx.module.css

1、自动生成的类名,我们只需要提供 classname 即可
[filename]_[classname]_[hash]
2、
类名:.error {} .red{}
实际生成的类名为:.NavHeader_error__ax7yz .NavHead_red_abcdc (相同命名的类名,经过module处理以后,会生成不同的实际类名,特殊标识)

三、在项目中使用css Modules

创建名为 [name].module.css 的样式文件(React脚手架中的约定,与普通 CSS 作区分)

组件中导入该样式文件(注意语法)

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

在这里插入图片描述

css module的注意点:

  • 类名最好使用驼峰命名,因为最终类名会生成styles的一个属性.tabBar {} => styles.tabBar
  • 如果没有使用驼峰命名,对于不合法的命名,需要使用[]语法.tab-bar {} => styles['tab-bar']
  • 如果是全局的类名,应该使用:global(.类名)的方式,不然会把全局类名给修改掉

:global(.icon-map) { }这样css modules就不会修改掉类名了

四、css module配合sass

  • css moudule也可以配合sass来使用,创建名为[name].module.scss
  • 使用css modules解决Login组件样式冲突问题
  • 如果sass文件中使用到了链接,需要使用绝对路径~

在这里插入图片描述

五、module.scss 使用步骤:

在这里插入图片描述

在这里插入图片描述

六、总结

React样式冲突总结:

sass和CSS Moudles 的搭配使用,解决了React中样式冲突的问题。

我们仍然可以在不同组件中使用相同类名,但我们需要知道,名字相同的类名在Moudle的作用下,实际类名并不相同,以此确保了,样式只在当前组件内生效。

React采取的是组件化编程组件和组件对应的样式会放在同一个组件文件夹下。

但我们仍然需要知道:在最后编译打包之后,所有组件的解构和样式,都会打包在同一个html页面中。

到此这篇关于React样式冲突解决问题的方法 的文章就介绍到这了,更多相关React样式冲突内容请搜索编程网以前的文章或继续浏览下面的相关文章希望大家以后多多支持编程网!

--结束END--

本文标题: React样式冲突解决问题的方法

本文链接: https://www.lsjlt.com/news/199285.html(转载时请注明来源链接)

有问题或投稿请发送至: 邮箱/279061341@qq.com    QQ/279061341

本篇文章演示代码以及资料文档资料下载

下载Word文档到电脑,方便收藏和打印~

下载Word文档
猜你喜欢
  • React样式冲突解决问题的方法
    目录前言:CSS IN JS一、概念二、CSS Modules三、在项目中使用css Modules四、css module配合sass五、module.scss 使用步骤:六、总结...
    99+
    2023-03-10
    React样式冲突 React样式
  • React样式冲突解决问题如何解决
    本篇内容主要讲解“React样式冲突解决问题如何解决”,感兴趣的朋友不妨来看看。本文介绍的方法操作简单快捷,实用性强。下面就让小编来带大家学习“React样式冲突解决问题如何解决”吧!前言:React最终编译打包后都在一个html页面中,如...
    99+
    2023-07-05
  • 如何解决css样式冲突问题
    本篇内容主要讲解“如何解决css样式冲突问题”,感兴趣的朋友不妨来看看。本文介绍的方法操作简单快捷,实用性强。下面就让小编来带大家学习“如何解决css样式冲突问题”吧! 解决方法...
    99+
    2022-10-19
  • css样式冲突的问题如何解决
    本篇内容介绍了“css样式冲突的问题如何解决”的有关知识,在实际案例的操作过程中,不少人都会遇到这样的困境,接下来就让小编带领大家学习一下如何处理这些情况吧!希望大家仔细阅读,能够学有所成!1、 细化选择符通过使用组合器(Combinato...
    99+
    2023-06-20
  • Android滑动冲突问题的解决方法
    叙述 滑动冲突可以说是日常开发中比较常见的一类问题,也是比较让人头疼的一类问题,尤其是在使用第三方框架的时候,两个原本完美的控件,组合在一起之后,忽然发现整个世界都不好了。 ...
    99+
    2022-06-06
    方法 Android
  • IP地址冲突问题及解决方法
    本篇内容主要讲解“IP地址冲突问题及解决方法”,感兴趣的朋友不妨来看看。本文介绍的方法操作简单快捷,实用性强。下面就让小编来带大家学习“IP地址冲突问题及解决方法”吧!如今许多操作以及工作都在网络上流行,那么我们就要注意网络的应用了。伴随着...
    99+
    2023-06-20
  • SpringBoot多个定时器冲突问题的解决方法
    目录战术分析使用场景问题场景重现添加注解配置类战术分析 上次的博客疏忽了定时器的一个大重点… 实际开发项目中一定不止一个定时器,很多场景都需要用到,而多个定时器带来的问...
    99+
    2022-11-13
  • Mybatis-plus与Mybatis依赖冲突问题解决方法
    错误描述 An attempt was made to call a method that does not exist. The attempt was made from t...
    99+
    2022-11-12
  • 解决docker与vmware的冲突问题
    1、docker启动问题: 问题解决: 需要开启Hyper-V,(开启方法:控制面板->程序->程序和功能->启动或关闭Windows功能,然后再重新启动电脑) ...
    99+
    2022-11-11
  • git解决冲突的方法
    这篇文章将为大家详细讲解有关git解决冲突的方法,小编觉得挺实用的,因此分享给大家做个参考,希望大家阅读完这篇文章后可以有所收获。git解决冲突的方法:首先在项目目录上点击右键,点击双向红箭头的位置;然后选择需要修改冲突的文件,选择merg...
    99+
    2023-06-06
  • sqlserver数据库最大Id冲突问题的解决方法
    本篇内容主要讲解“sqlserver数据库最大Id冲突问题的解决方法”,感兴趣的朋友不妨来看看。本文介绍的方法操作简单快捷,实用性强。下面就让小编来带大家学习“sqlserver数据库最大Id冲突问题的解决...
    99+
    2022-10-18
  • 解决MongoDB技术开发中遇到的写入冲突冲突问题的方法研究
    解决MongoDB技术开发中遇到的写入冲突问题的方法研究在大规模并发访问下,MongoDB作为一种非关系型数据库,常常会遇到写入冲突的问题。这种冲突发生在多个客户端同时对同一文档进行写入操作时,可能会导致数据不一致的情况发生。为了解决这个问...
    99+
    2023-10-22
    MongoDB 解决方法 写入冲突
  • VSCode中Eslint和Prettier冲突问题最新解决方法
    目录前言为什么会冲突EslintPrettier冲突解决前言 本次环境皆为 @vue/cli默认安装带有的 eslint@7.32.0,VSCode 插件版本: Eslint v2....
    99+
    2023-02-23
    VSCode Eslint Prettier 冲突 VSCode Eslint Prettier
  • 解决Mybatis中mapper的ID冲突问题
    mapper 的id冲突原因: 原因一: 在同一个mapper.xml中存在相同的ID 原因二: 同时使用了xml配置和注解配置 解决方案: 只保留xml或者注解即可!!! Myb...
    99+
    2022-11-12
  • Android 中ScrollView与ListView冲突问题的解决办法
    Android 中ScrollView与ListView冲突问题的解决办法自定义MyListViewpublic class MyListView extends ListView { public MyListView(Context...
    99+
    2023-05-30
    android scrollview listview
  • node.js降低版本的方式详解(解决sass和node.js冲突问题)
    目录一、概述二、降低node.js版本(一)卸载清除原版本 (二)下载指定的版本与配置(三) 版本更改成功一、概述 在使用vue的时候,会遇到项目的依赖(package.j...
    99+
    2023-02-22
    node.js降低版本 sass和node.js冲突
  • Android App中ViewPager所带来的滑动冲突问题解决方法
    叙述 滑动冲突可以说是日常开发中比较常见的一类问题,也是比较让人头疼的一类问题,尤其是在使用第三方框架的时候,两个原本完美的控件,组合在一起之后,忽然发现整个世界都不好了。 关...
    99+
    2022-06-06
    方法 viewpager app Android
  • 如何解决docker与vmware的冲突问题
    这篇文章给大家分享的是有关如何解决docker与vmware的冲突问题的内容。小编觉得挺实用的,因此分享给大家做个参考,一起跟随小编过来看看吧。1、docker启动问题:问题解决:需要开启Hyper-V,(开启方法:控制面板->程序-...
    99+
    2023-06-14
  • 解决SpringBoot中MultipartResolver和ServletFileUpload的冲突问题
    目录MultipartResolver和ServletFileUpload冲突1.首先spring boot默认会调用MultipartResolver2.需要重写一个MyMulti...
    99+
    2022-11-12
  • 怎么解决Git合并冲突的问题
    本篇内容介绍了“怎么解决Git合并冲突的问题”的有关知识,在实际案例的操作过程中,不少人都会遇到这样的困境,接下来就让小编带领大家学习一下如何处理这些情况吧!希望大家仔细阅读,能够学有所成!合并并不仅仅是简单的文件添加、移除的操作,Git ...
    99+
    2023-06-04
软考高级职称资格查询
编程网,编程工程师的家园,是目前国内优秀的开源技术社区之一,形成了由开源软件库、代码分享、资讯、协作翻译、讨论区和博客等几大频道内容,为IT开发者提供了一个发现、使用、并交流开源技术的平台。
  • 官方手机版

  • 微信公众号

  • 商务合作