HTML笔记 javascript React ·

react中的css隔离

一般情况下,我们在react中写css,都是直接以文件形式来写,然后再组件中进行引用,但是这种写法会导致相同class名称引起的样式冲突,这就要求我们在写class时对命名有严格的要求,比如前缀增加组件名。

但是这种方式个人感觉很繁琐,使用过VUE的小伙伴应该都了解,在vue中会有scoped这个概念,使得样式有了作用域,避免了全局污染的情况。受此启发,我们可以在react中实现类似的方案。

function App() {
  return (
    <div className="app" data-component="app">
      <div className="body">
        <p className="title">标题</p>
        <p className="content">内容</p>
      </div>
    </div>
  );
}

css中这样写

[data-component=app] {
  .body {
    padding: 20px;
    .title {
      font-size: 18px;
      font-weight: bold;
      color: #333333;
    }
    .content {
      font-size: 16px;
      color: #66666;
    }
  }
}

data-component可以限制为每个组件的名字,因为className可能会出现重复,但是组件名字在同一个项目中基本不会重复。

这样就解决了css class全局污染的问题。简单易用,不用引入新的概率和扩展。

参与评论