javascript - 在 React 中为不同的路由使用不同的 CSS

标签 javascript css reactjs routes

我需要能够在 React 的不同路由中使用 CSS。我宁愿不使用 SASS,但如果它是唯一的解决方案,我会使用它。

我的主页(index.js)需要使用index.css,我的其他页面(page2.js)需要使用page2.css(示例名称)

文件结构:

-src
  -components
  -pages
     -css
        -index.css
        -page2.css
     -index.js
     -page2.js

文件:

// src/pages/index.js
import React from 'react'
import './css/index.css'

const Homepage = () => {
  return (
    <!-- unrelated HTML -->
  )
}

export default Homepage

// src/pages/page2.js
import React from 'react'
import './css/page2.css'

const Page2 = () => {
  return (
    <!-- unrelated HTML -->
  )
}

export default Page2

看起来确实应该可以正常工作,但它会同时加载两个 CSS 文件,并且它们会重叠并出现故障。

我真的很想避免使用如上所述的 SASS 之类的东西。有没有什么方法可以通过路由来做到这一点,而无需做一些像在页面更改时更改 link 标记之类的黑客行为?

最佳答案

我强烈建议你使用css模块,css模块只是普通的css文件,但应用于css标准化结构来管理页面之间的多个css文件。

为此你应该:

  1. 将您的 CSS 文件重命名为“homePage.module.css/page2.module.css”
  2. 将每个 css 文件移动到其页面目录

看起来像这样

-src
  -components
  -pages
        -page2.js
        -page2.module.css
     -index.js
     -homePage.module.css

最后在其对应的页面中导入每个css文件 让我知道它是否对您有用。

关于javascript - 在 React 中为不同的路由使用不同的 CSS,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/74496665/

相关文章:

javascript - 通过 @anywhere twitter 应用程序存储 access_token

javascript - 记住 GPS 权限状态

javascript - Angular 单元测试: unable to change property value after DOM click

html - 如何借助 CSS 增加页面宽度?

html - css 页面 curl 效果投影与旋转

javascript - 部分等距矩形全景图 Three.js

html - 为什么 css 中的转换样式将我的文本放在其父 div 之外?

javascript - 在 Enzyme 中测试 DOM

reactjs - React 中的 Snap.svg - 如何在生命周期方法中访问 svg?

reactjs - Swagger-UI、React 应用程序 - 无法填充参数字段(或输入字段的数据未读取但已清除)