react中css样式污染问题

问题:突然发现一个页面的样式覆盖了另一个页面的样式,但是两个页面是独立开发的,样式也是分开写的,互相没有引用

原因:搜索发现是因为react会把所有的样式文件都放到<head>里面(如下图),这样如果类名重复,样式是会互相覆盖的。

解决方法:我搜索了一下,本质上都是让类名不一致。

一:使用css modules

1.1 改样式文件名  xxx.scss-->xxx.module.scss

1.2 改引用方法 import './demo.scss'-->import styles from './demo.scss'

1.3 改类名写法 className=“btns"-->className={styles.btns}

css modules会自动补充类名(例如btns_哈希值),保证类名的唯一性。

二:styled-components

1.1 安装

$ npm install styled-components
$ yarn add styled-components

1.2 使用

import styled from 'styled-components';

const Wrapper = styled.section`
  margin: 0 auto;
  width: 300px;
  text-align: center;
`;

const Button = styled.button`
  width: 100px;
  color: white;
  background: skyblue;
`;

render(
  <Wrapper>
    <Button>Hello World</Button>
  </Wrapper>
);

这个方法没有用过哈哈,感觉很好用~

参考资料:使用 styled-components 加速 React 开发 - 知乎 (zhihu.com)

                  一劳永逸!React中解决css样式污染问题 - 掘金 (juejin.cn)

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值