【问题标题】:ReactJS several css filesReactJS 几个 css 文件
【发布时间】:2023-04-04 00:07:02
【问题描述】:

我正在使用 ReactJS 构建一个 SPA,但是在样式方面我有一个问题,所以我有 3 个不同的页面(我将来会添加更多页面)所以每个文件都有自己的 css 文件我像这样导入这些文件

*index.jsx
import index form './index.css'*

*page2.jsx
import page3 form './index.css'*

*page3.jsx
import page3 form './index.css'*

所以当我在浏览器中打开网站时,我会转到 (index) 页面,但当我转到下一页 (page2) 时,然后单击返回并转到 (index) 页面样式已更改,因为我在两个 css 文件中有一些具有相同名称的类,并且已加载的第二个 css 文件 (page2.css) 已覆盖 (index.css) 我该如何解决这个问题。

对不起,如果问题不是很清楚,

谢谢!

【问题讨论】:

  • 你可以使用 css-modules github.com/css-modules/css-modules
  • 我看到了,但是当我必须动态应用样式时会更难我正在尝试找到没有 css-modules 的方法 感谢您的时间!

标签: javascript css reactjs react-router jsx


【解决方案1】:

您需要找到一种方法来区分不同的上下文。没有看到代码很难说,但是如果每个页面中都有一个父元素,您可以应用一个 id,您可以将其包含在您的 css 选择器中,以定位您在每种情况下实际想要设置样式的元素。

div#inIndex .myStyle {
    /* styles */
}

div#inPage2 .myStyle {
    /* styles */
}

div#inPage3 .myStyle {
    /* styles */
}

这可行,但我想知道为什么您不只使用不同的类名?

【讨论】:

  • 首先感谢您的回答。留下同名的样式是我的坏事,但现在改变已经太晚了。现在我不能很好地理解您的评论我将每个组件放在单独的文件中,因此每个组件都有父 div 返回(
    childs (other components)
    );在那种情况下,我该如何应用您提到的解决方案,请您再帮我一点吗?
  • 因为无法访问 css 文件而编辑类名是否为时已晚?如果是这样的话,那么我真的不明白你怎么能解决这个问题。我能想到的唯一解决方案是编辑 css 文件以添加某种独特的选择器。
  • 不,不,我可以访问 css 文件,但我正在尝试找到更简单的解决方案,因为我需要尽快完成,例如仅在 parent id = 'index' 或类似的情况下应用样式这个
  • 你可以用 ReactDOM 做一些事情来选择你想要设置样式的节点,然后添加你的样式。 myNode = ReactDOM.findDOMNode('#index') myNode.style.backgroundColour = 'green'
猜你喜欢
  • 2017-07-01
  • 2017-04-29
  • 2021-12-10
  • 2012-04-09
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2020-10-13
相关资源
最近更新 更多