javascript - 动态导入css文件到react中
问题描述
我想知道有没有办法动态地将css文件导入到react中。假设我有一个名为 style-light.css 的 css 文件,而我还有另一个名为 style-dark.css 的 css 文件。有没有办法使用反应状态或其他方法根据状态的当前值将 css 文件动态导入组件?例如
import "../style-light.css" // default import
export default function TestImport(){
const [switch, setSwitch] = useState("light");
if(switch === "dark"){
import "../style-dark.css" // adds the style-dark import below the light one to overwrite the light css.
}
return (
<div>
<button onClick={()=> setSwitch("dark")}> click to get dark css </button>
</div>
)
}
基本上是这样的吗?任何见解都会有所帮助。谢谢
解决方案
选项1
为此,我建议您使用 CSS 变量并且只使用一个 CSS 文件。您可以根据页面正文上应用的类更改变量的值。例如:
变量.css
:root {
--textColor: black;
}
[class="dark-theme"] {
--textColor: white;
}
使用 javascript,您可以在 html 文档中添加或删除类,如下所示
组件.js
document.documentElement.classList.add('dark-theme')
document.documentElement.classList.remove('dark-theme')
在您的组件样式上,您可以将变量与var(--variable)
组件.css
.my-component-class {
color: var(--textColor);
}
选项 2
使用一些 CSS-IN-JS 库,如 styled-components 或情感,您可以使用 ThemeProvider 来根据应用程序中的某些状态相应地更改我们的主题。在此处查看此示例:https ://styled-components.com/docs/advanced#theming
推荐阅读
- dialogflow-es - 如何从 Dialogflow 实现发送自定义有效负载
- react-native - 为什么 KeyboardAvoidingView 没有出现在 React Native App 中?
- excel - VBA - 比较列和一个目标单元格之间的绝对差异
- python - 如何使用 MultiIndex 数据框加入多个时间序列?
- python - 如何在 Python 中连接到需要我登录并拥有自签名证书的站点?
- file-upload - 如何开玩笑地模拟文件上传或文件对象?
- collections - 如何在具有相同键的哈希图中添加值以及何时将值存储为另一个哈希图
- java - 如何将txt文件放到第二个txt文件的特定行
- mysql - MYSQL 案例何时
- python-3.x - 如何在真正的智能手机上运行自动化测试?