如何使用 CSS 模块在 React 中设置子组件的样式

2024-01-09

我正在将 React 与 SASS 和 CSS 模块结合使用。如何在不传递新的 ClassName 或类似名称的情况下设置子组件的样式。对于前。

我想在子组件上定位或执行一些样式,而不必给出特定的类,就像您所做的那样p span例如,所有跨度都是子组件,我只想做一些引用父级中所有子组件的样式。但随着课程的编写,我不知道如何引用那些孩子。

//ParentComponent.js
Import Styles from 'ParentComponent.scss';
Import Child from 'ChildComponent';
Import ChildB from 'ChildComponentB';
...
return(
    <div>
        <ChildB />
        <Child />
        <Child />
    </div>
);


//ParentComponent.scss (?)(?)
.child {...}

这里我如何引用Child例如,仅使用组件而不传递 ClassName,或者不导入 ChildComponent 的 SASS 文件以获得对组件类的引用。

//ChildComponent.js
Import Styles from 'ChildComponent.scss';
...
return(
    <div classNames={Styles.child}></div>
);

//ChildComponent.scss
.child {...}

有多种方法可以实现这一点,有或没有缺点。

将每个孩子包裹在一个 div 中

第一个是将每个子组件包装在一个div然后在其上添加一个类,然后您可以在样式表中引用该类:

return(
    <div>
        <div className={style.child}><ChildB /></div>
        <div className={style.child}><Child /></div>
        <div className={style.child}><Child /></div>
    </div>
);

将 className 作为 props 传递

您可以将类名作为道具传递,然后将此道具添加到子组件中所需的任何标签中。另一方面,您必须对您想要拥有类的每个组件执行此操作。

return(
    <div>
        <ChildB className={style.child}/>
        <Child className={style.child}/>
        <Child className={style.child}/>
    </div>
);
//ChildComponent.js
Import Styles from 'ChildComponent.scss';
...
export default ({ className }) => 
    <div className={`${Styles.child} ${className}`}></div>

使用CSS子组合器

在您的父样式表中,您可以使用直接子选择器 https://developer.mozilla.org/en-US/docs/Web/CSS/Child_combinator >选择任何直接子项。您还可以将此运算符与星号运算符结合使用,但要小心使用此运算符,因为如果在页面上频繁使用,它可能会减慢浏览器的速度

如果我们假设您的所有子组件都是div:

/* ParentComponent.scss */
.parent > div {
  
}

或者如果你不知道 Child 是由什么组成的

/* ParentComponent.scss */
.parent > *{
  
}
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

如何使用 CSS 模块在 React 中设置子组件的样式 的相关文章

  • 如何理解 Angular JS 中的控制台错误消息?有什么工具吗?

    我是 Angular JS 的新手 我的第一个问题是如何理解 Angular JS 中控制台的错误消息 我编写了这段用于匹配密码的代码片段 它在控制台上抛出错误 但它工作正常 它是有线的 我无法从这些控制台消息中理解任何内容 谁能指出我为什
  • jQuery 中的 Javascript .files[0] 属性

    jQuery 中是否有与此语句等效的语句 var value document getElementById id files 0 使用附加 files 0 的标准 jQuery 选择器似乎不起作用 并且我找不到与 files 等效的 jQ
  • 在 MongoDB 中查找具有字符串 ID 数组的文档

    我有一个 id 字符串数组 我想将其与 find 函数一起使用 db companies find id in arr arr看起来像这样 563a2c60b511b7ff2c61e938 563a2c60b511b7ff2c61e8b7
  • 从 x,y 屏幕空间坐标查找 2D 等距网格上的列、行(将方程转换为函数)

    我试图在屏幕空间点 x y 的二维等距网格中找到行 列 现在我几乎知道我需要做什么 即找到上图中红色向量的长度 然后将其与表示网格边界的向量的长度 由黑色向量表示 进行比较 现在我在数学堆栈交换中寻求帮助 以获得用于计算点 x y 与黑色边
  • 限制文本区域中每行的字符数

    我整个周末都在寻找解决这个难题的方法 但尚未找到一个可以正常工作的解决方案 我想要实现的是限制文本区域中每行的字符数 不是相同地限制它们 而是我选择的每行不同的字符数 例如 我只想在我的文本区域中包含 4 行 第 1 2 和 3 行将限制为
  • ant-d upload中如何为removeFile添加PopConfirm一个图片文件

    我正在使用 Ant d Upload 通过本地系统上传文件 然后单击文件预览图像上的删除图标 图像文件将被删除 我想添加一个弹出确认 所以我尝试在 onRemovefunction 中添加确认作为承诺但它不起作用 它在浏览器中显示警报 on
  • 如何通过 HTML 按钮播放声音

    我目前通过网站播放音乐的方法是通过 HTML 音频标签 不过我希望能够通过 HTML 按钮来播放它 该按钮应该能够在播放和停止之间切换音乐 我在 JSFiddle 创建了一个示例 但不知道如何实现它 有人可以告诉我如何使用我的 JSFidd
  • 将音频与视频流合并 Node.js

    我正在创建 YouTube 视频下载器并且正在使用ytdl core库 它无法下载带有音频的高质量视频 因为 youtube 将其放在另一个文件中 但我需要将其全部下载到一个文件中 我已经这样做了 app get download asyn
  • 何时不使用承诺[关闭]

    Closed 这个问题是基于意见的 help closed questions 目前不接受答案 在阅读了数十篇关于 es6 Promise 有多伟大以及为什么我们应该实现它们的文章之后 我有这样的感觉 ALL我的 不平凡的 JavaScri
  • 如何在 d3 js 中突出显示从根到选定节点的路径?

    我使用 d3 js 创建了一棵树 现在我创建了一个下拉菜单 其中包含树中所有节点的列表 现在 从下拉菜单中选择一个节点时 我想突出显示从根到该特定节点的路径 这个怎么做 首先创建一个 flatten 函数 它将分层数据变成一个 n 数组 f
  • 创建 Cookie 时需要帮助

    我有一个名为yes和另一个名叫no
  • 使用模态表单 ajax 超出 HTMLFormElement.toString 的最大调用堆栈大小

    我想使用模态窗口中的 ajax 请求提交表单 单击此链接可打开该模式 a class btn btn primary i class fa fa edit i Write a review a 模态窗口 div class modal fa
  • jQuery 选择器:为什么 $("#id").find("p") 比 $("#id p") 更快

    该页面的作者 http 24ways org 2011 your jquery now with less suck http 24ways org 2011 your jquery now with less suck断言 jQuery
  • 如何清除WebGL中的矩形区域?

    WebGL 有一个clear清除整个表面的方法 清除表面的特定矩形的最佳方法是什么 例如 我想将一个从 50 50 开始的 100x100 像素框设置为全零 ARGB 0 0 0 0 我现在能想到的就是用一个写入零的片段着色器绘制一个四边形
  • 使水平滚动条始终可见,即使底部不在视图中

    我将用一个片段来开始这个问题 该片段几乎显示了我想要完成的任务 wrapper overflow hidden display flex sidebar min width 200px background 333 color FFF co
  • 加载另一个 JS 脚本后加载

    这是我的代码 very big js file lots of html stuff 问题是 这些是异步加载的 有没有办法等待第二个脚本直到第一个脚本加载 如果您使用 jQuery 有一个非常简单的方法可以通过获取脚本 https api
  • 当选择下拉列表中的某些值时,取消选中复选框

    当我从下拉列表中选择某个值或用户未从下拉列表中选择任何值时 我需要取消选中复选框 我现在正在使用 Jquery 这是我现在使用的代码 但它不起作用 Script
  • 如何修复超出最大调用堆栈大小

    有一个 MERN Firebase 应用程序并收到此错误和一堆 atdeepExtend deepCopy ts 71 RangeError Maximum call stack size exceeded getApps as apps
  • Express.js Passport认证自动失败跳过策略

    UPDATE 我已将代码从护照本地注册内部移至单独的处理程序 并且运行良好 问题在于 Passport 和本地注册的使用 但我不知道为什么 我使用 Node js Express Passport 进行身份验证和注册设置 这是以前使用过的标
  • 如何在 SVG 元素上使用箭头标记?

    我需要在 d3 js 中创建一个箭头 但我找到的只是带有节点图的示例 我需要的是简单地制作一个从 A 点到 B 点的箭头 我尝试实现以下示例中的部分代码 http bl ocks org 1153292 http bl ocks org 1

随机推荐

  • Symfony 2:从存储库创建服务

    我正在学习 Symfony 并且一直在尝试使用存储库创建服务 我已经从generate entity 创建了我的存储库和实体 所以它们应该没问题 到目前为止 我在 services yml 中得到的内容是 parameters mytest
  • 如何在不加载空页面的情况下清理UIWebView的内容?

    我需要清理 UIWebView 的内容 以便重用它 但我在其委托方法中有一些身份验证处理代码 所以我不想加载像 about blank 这样的空页面来清理它 因为它会触发我的身份验证处理代码 那么有办法做到这一点吗 另外 通过重用它 我需要
  • 在 Rust 项目的 C 绑定上运行 jextract 时出现“cstdarg 文件未找到”

    我正在尝试与 Java 的巴拿马项目一起使用 Rust 编写一个简单的整数加法函数 使用生成绑定后cbindgencrate 运行 jextract 时出现以下错误 jextract t org adder L l adder java r
  • 多个InfoWindowAdatper的

    我有一张地图 我在其中创建不同类型的标记 我无法将信息窗口适配器分配给标记 哎呀 这不是很好 我只能为整个地图分配 InfoWindowAdapter 至少我认为 我的问题是我想根据我点击的内容显示不同类型的信息窗口 是否是设置一个 Inf
  • 如何用特定的颜色填充整个画布?

    如何填充整个HTML5
  • 步骤属性不适用于 HTML 输入类型“时间”

    我想要一个时间输入字段 用户只能选择完整的时间 在我的示例中 它将是 00 00 01 00 02 00 等等 这就是为什么我将步长属性设置为 3600 因为 3600 秒等于一小时 这是我的代码
  • Chrome 扩展:如何禁用页面可见性 API

    我正在编写一个 Chrome 扩展程序 需要防止网页触发文档 VisibilityChange 事件 至少我需要能够覆盖 document visibilityState 即使它是只读属性 如果不可能 因为此扩展程序仅供我使用 不会出现在
  • 如何使用 jquery 选择包含精确文本值的范围? [复制]

    这个问题在这里已经有答案了 可能的重复 根据确切的文本内容选择元素 https stackoverflow com questions 2338439 select element based on exact text contents
  • 改进 Boyer-Moore 字符串搜索

    我一直在研究 Boyer Moore 搜索算法 并从 Shriphani Palakodety 的基本代码集开始 我创建了 2 个附加版本 v2 和 v3 每个版本都进行了一些修改 例如从循环中删除 len 函数 而不是重构 while i
  • 滑动菜单手势覆盖图手势的可滚动手势-android

    我正在使用滑动菜单here https github com jfeinstein10 SlidingMenu在我的应用程序中 我的应用程序还有一个图形视图 http www jjoe64 com p graphview library h
  • applicationWillTerminate 在 iPhone 上究竟如何工作?

    我正在考虑如何让我的 iPhone 应用程序尽可能 防弹 现在 我正在考虑应用程序将如何响应用户在应用程序处理的关键点按下主页按钮 What exactly发生 应用程序的线程中是否还执行了更多指令 当 applicationWillTer
  • PatternSyntaxException:在 Java 中使用正则表达式时出现非法重复

    我不太了解正则表达式 但我需要匹配一个简单的模式 以下内容应返回 true Pattern matches user id 0 9 inputLine 当输入行为 user id 34 但是 我遇到了这个异常 java util regex
  • 递减迭代器

    我有一个指向双向数据结构 实际上是向量 中的位置的普通迭代器 现在我想对当前位置过去的 x 个元素执行操作 尽管最后一个 x 可能是向量的第一个元素 但之前总是至少有 x 个元素 我写了这段代码 vector
  • 我需要一些指导来编写哈希函数来对大约 160,000 个字符串进行排序

    我的老师把这个甩给了我们 并告诉我们我们只需要谷歌一下如何编写哈希函数 我对此很没有方向 我们为类编写了一个基本的哈希表模板 但我有一个项目需要将大约 160 000 个字符串排序到至少有 500 个存储桶的表中 为了速度我想做更多 我只是
  • 如何生成一个好的随机种子传递给 srand()?

    我正在编写一个 C 程序 需要创建一个临时文件供其内部使用 我想通过运行多个进程来允许程序并发执行 因此临时文件名需要随机化 这样每个生成的进程都会生成一个唯一的临时文件名供自己使用 我使用 rand 为文件名的一部分生成随机字符 因此我需
  • Playstore 提示“声明敏感权限”

    我们的 Android Manifest 没有任何 SMS 权限 我们一直这样做 直到 4 版本发布回来 但 Playstore 仍然提示我们填写敏感权限声明 内容如下 先前声明的权限 3个权限 android permission REC
  • 将文本字段完成限制为 Intellij Plugin 中的一组特定段

    根据此处的答案 我能够获得代码完成以适用于我的插件中的文本字段 IntelliJ 插件中具有标准 PsiElement 自动完成功能的文本字段 https stackoverflow com questions 59443789 text
  • Web应用前端和后端的误区

    我需要一些指导 建议 我决定构建一个 Web 应用程序 但我很难将所有组件组合在一起 我过去制作过基本的网站 但已经忘记了很多 我过去学过 JavaScript 和 Java 但我有点生疏 所以如果你决定回复 请把我当作一个对这一切都不熟悉
  • 如何将文件从一个目录移动到另一个目录?

    我是 python 初学者 我想将一些文件从一个目录移动到另一个目录 我现在必须使用一些模块 例如 Os 和 Shutil 我写了这段代码 但它返回一个错误 import shutil import os source os listdir
  • 如何使用 CSS 模块在 React 中设置子组件的样式

    我正在将 React 与 SASS 和 CSS 模块结合使用 如何在不传递新的 ClassName 或类似名称的情况下设置子组件的样式 对于前 我想在子组件上定位或执行一些样式 而不必给出特定的类 就像您所做的那样p span例如 所有跨度