React样式冲突解决方案

在这里插入图片描述

App.js

import React from 'react'
import Hello from './components/Hello/Hello'
import Welcome from './components/Welcome/Welcome'
const { Component } = React

// 创建外壳组件
export default class App extends Component {
  render () {
    return (
      <div>
        <Hello />
        <Welcome />
      </div>
    )
  }
}

Hello.js

import React, { Component } from 'react'
import './Hello.css'

// 定义并且暴露Hello组件
export default class Hello extends Component {
  render () {
    return <h2 className="title">Hello React!</h2>
  }
}

Hello.css

.title {
  background: skyblue;
}

Welcome.jsx

import React, { Component } from 'react'
import './welcome.css'

export default class Welcome extends Component {
  render () {
    return <h2 className="welcome">Welcome</h2>
  }
}

welcome.css

.welcome {
  background: aquamarine;
}

效果:
在这里插入图片描述
如果我们修改一下Welcome的样式:
在这里插入图片描述
在这里插入图片描述
把welcome改成title

那么在App.js中,由于Welcome组件是后引入的,Welcome组件的title样式就会覆盖Hello组件的同名的title样式,所以两个组件背景色都是蓝色了
在这里插入图片描述
在这里插入图片描述

解决办法:

1.使用less或者sass嵌套语法写css,类似下面这样:
在这里插入图片描述

先修改Hello.css的文件名为Hello.module.css
在这里插入图片描述
再做如下修改:
在这里插入图片描述
效果:
在这里插入图片描述
这样就不会有样式冲突了

推荐使用第一种方式less或者sass嵌套写法

  • 1
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 2
    评论
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值