【问题标题】:Switch between two external css files in react在反应中的两个外部css文件之间切换
【发布时间】:2020-08-16 07:45:08
【问题描述】:

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

     <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" 将其导入我的应用程序,它没有用。我该如何解决?

【问题讨论】:

    标签: javascript html css reactjs


    【解决方案1】:

    这是一个非常有趣的问题。

    为了将 css 文件动态导入到 react 我会检查这个线程:here

    但是我认为这不是最好的解决方案,因为它可能很难维护并且不是很干燥。

    我宁愿有 1 个 css 文件来查看 body 上的类并根据它更改 css 颜色(假设您不更改布局,只更改颜色)

    【讨论】:

    • 是的,即使我认为这不是最好的解决方案。只是客户向我提供了这两个 css 文件并要求应用切换选项。我不知道该怎么做
    • 啊,好吧,很公平。我认为我提供的链接绝对应该为您指明正确的方向。 :)
    猜你喜欢
    • 2021-04-28
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2023-03-07
    • 1970-01-01
    • 2011-01-06
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多