当前位置: 首页 > 面试题库 >

如何使React CSS导入组件范围?

左劲
2023-03-14
问题内容

我有几个具有以下CSS /组件结构的组件

About/style.css

.AboutContainer {
    # Some style
}

p > code {
    # Some style
}

我将CSS导入组件中,如下所示

About/index.js

import './style.css';

export default class About extends Component {
    render() {
         # Return some component
    }
}

但是,CSS被导入到本<header>节中,并保持全局范围。

我期望CSS是:

  1. 组件作用域,即样式仅应用于 在此组件内呈现的内容。
  2. 如果卸载该组件,该组件的样式将消失。

但是,从浏览器进行检查时,样式在该<header>部分指定,并应用于所有组件

<header>
   // Stuff
   <style type="text/css">style for component About</style>
   <style type="text/css">style for component B</style>
   <style type="text/css">style for component C</style>
   // Stuff
</header>

如何导入CSS进行组件作用域?似乎我不正确地理解React ES6中的CSS导入。

我正在关注本教程

编辑

布雷特的答案是正确的。但是,我的问题却出在其他地方。我使用create-react-
app
创建了我的应用程序,这基本上简化了执行React所需的设置。它包括WebPack,Babel和其他入门指南。它使用的默认WebPack配置未为其设置模块选项,css- loader因此默认为false,因此未启用本地范围。

只是为了获得更多信息,似乎create-react-app没有自定义WebPack配置的直接方法,但是网络上似乎有许多方法解决方法。


问题答案:

CSS模块是一个CSS文件,默认情况下,所有类名和动画名都在本地作用域内。所有URL(url(…))和@imports均为模块请求格式(./xxx和../xxx表示相对,xxx和xxx

/ yyy表示在模块文件夹中,即在node_modules中)。

这是一个简单的示例:

假设我们有一个类似的React组件:

import React from 'react';
import styles from './styles/button.css';

class Button extends React.Component {
  render() {
    return (
      <button className={styles.button}>
        Click Me
      </button>
    );
  }
}
export default Button;

和一些CSS ./styles/button.css

.button {
  border-radius: 3px;
  background-color: green;
  color: white;
}

CSS模块执行完魔术后,生成的CSS将类似于:

.button_3GjDE {
  border-radius: 3px;
  background-color: green;
  color: white;
}

其中的_3DjDE是随机生成的哈希-为CSS类指定一个唯一的名称。

替代

一个简单的替代方法是避免使用通用选择器(如pcode等),并采用了组件和元件基于类的命名约定。甚至像BEM这样的约定也将有助于防止您遇到的冲突。

将其应用于您的示例,您可以使用:

.aboutContainer {
  # Some style
}

.aboutContainer__code {
  # Some style
}

基本上,您需要设置样式的所有元素都将具有唯一的类名。



 类似资料:
  • ReactCSS 是一个基于 React 模式实现的 CSS 样式操作封装和定义。提供一种非常简单的方式来附加 inline CSS 样式 示例代码: var ReactCSS = require('reactcss');class Button extends ReactCSS.Component {  classes() {    return {      'default': {     

  • 问题内容: 我在玩和使用和。我想在不同的文件中构建多个组件,将其导入单个文件并将其捆绑在一起 假设我有几个这样的组件: my-navbar.jsx main-page.jsx 使用webpack并按照其教程进行操作,我有: 构建项目并运行它之后,在浏览器控制台中出现以下错误: 我究竟做错了什么?如何正确导入和导出组件? 问题答案: 尝试 默认设置 组件中的导出: 通过使用默认值,您表示将成为该模块

  • 问题内容: 我想将CSS文件导入React组件。 我已经尝试过,但是下面出现错误; 找不到模块:错误:无法解析c:\ Users \ User \ User \ Documents \ pizza-app \ client \ src \ components @中的“文件”或“目录” ../../../public/styles/disabledLink。 /client/src/compone

  • 我想在括号中创建一个json文件,只存储一个有200个元素的数组,我想能够将该文件导入到我的“main.js”文件中,并且能够使用它,即使数组本身已经不在“main.js”了。 我该怎么做?

  • 问题内容: 我正在处理自动为我生成的一些python代码。我想避免手动编辑这些python文件,因此避免这个问题/问题: foo.py: boo.py: bar.py: 执行: python.exe bar.py 给出了找不到的错误。但是bar都导入&。不应自动提供给? 有办法吗?如前所述, boo.py 是为我自动生成的,我想避免将import foo添加到 boo.py中 。 谢谢。 问题答案

  • 我正在使用React构建一个web应用程序,它显示了您选择的建筑的蓝图,位于已选择的校园中。 我有一个“内容”组件,根据您的选择加载校园或建筑地图。“构建地图”组件需要根据您选择的建筑加载特定的蓝图。它获取带有建筑物名称的props.building,但我不知道如何使用该变量加载组件。 我试过导入、获取和请求,但似乎没有任何效果。 请帮忙。 我的代码如下所示: //内容组件 //BuildingM