javascript - 在 react 中在两个外部 css 文件之间切换

标签 javascript html css reactjs

我想应用一个选项,用户可以在应用程序中在暗模式和亮模式之间切换。

     <link rel="stylesheet" href="../src/cssf/light.css">
     <link rel="stylesheet" href="../src/cssf/dark.css">
我有整个网站的两张纸。
<label class="form-check-label" id="dark">
                            <input type="radio" class="form-check-input" checked name="theme"><label>Dark</label>
                          </label>
                        </div>
                        <div class="form-check-inline">
                          <label class="form-check-label" id="light">
                            <input type="radio" class="form-check-input" name="theme"><label>Light</label>
                          </label>
我已经给出了选项,但我必须做什么才能在两个 css 文件之间切换?
import React, { useEffect, useState } from "react";
import "./cssf/style.css";
import logo from "./cssf/logo-sm.png";

function App() {

  const [ stylePath, setStylePath ] = useState("./cssf/dark-theme.css");
    
  const handleButtonClick = () => {
    setStylePath("./cssf/light-theme.css");
  }

  useEffect(() => {
    var head = document.head;
    var link = document.createElement("link");

    link.type = "text/css";
    link.rel = "stylesheet";
    link.href = stylePath;

    head.appendChild(link);

    return () => { head.removeChild(link); }

  }, [stylePath]);
我使用了这种方法,它在头部完美地更新了链接标签,但没有使用 import "../cssf/sheername.css"将它导入到我的应用程序中,它没有用。我该如何解决?

最佳答案

这是一个很有趣的问题。
对于动态地将 css 文件导入 react 我会检查这个线程:here
但是我不认为这是最好的解决方案,因为它可能很难维护并且不是很 DRY。
我宁愿有 1 个 css 文件,它查看 body 上的类并根据它更改 css 颜色(假设您不更改布局,只更改颜色)

关于javascript - 在 react 中在两个外部 css 文件之间切换,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/63434412/

相关文章:

javascript - 如何选择模式来显示我的表单并重定向到提交表单上的外部 URL?

Javascript 弹出 div 在 IE9 中不会关闭

html - Bootstrap 表格垂直滚动

javascript - DIV 的可编辑内容无法正常工作

css - 不一致的 div 溢出 css

javascript - Bootstrap 中的缩略图标题悬停效果

javascript - 无法弄清楚如何修复 3rd 方库元素的 CSS

javascript - 使用 JavaScript 和 HTML5 在字符串的特定单词中 href

html - 如何防止在 Bootstrap 中覆盖 div

html - 我可以在窗口加载时一次制作一个 css 动画吗?