Company logo
  • Empleos
  • Bootcamp
  • Acerca de nosotros
  • Para profesionales
    • Inicio
    • Empleos
    • Cursos y retos
    • Preguntas
    • Profesores
    • Bootcamp
  • Para empresas
    • Inicio
    • Nuestro proceso
    • Planes
    • Pruebas
    • Nómina
    • Blog
    • Calculadora

0

35
Vistas
Dynamically switch CSS files in React

I have 2 css files: light.css and dark.css, also have a ThemeSwitch component which represents the select element, this element has handler for handling change of value (the value is either light or dark). The question is: is there any way to include one of these css files according to the ThemeSwitch value: if value is light - import/include light.css, if value is dark - then import/include dark.css (like a theme switcher)

5 months ago · Juan Pablo Isaza
1 Respuestas
Responde la pregunta

0

You can use react-lazy or react-suspense libraries for conditionally changing components or CSS files.

Below is the example of react-lazy library

import React, { useLayoutEffect, useState } from "react";

const Theme1 = React.lazy(() => import("./Theme1"));
const Theme2 = React.lazy(() => import("./Theme2"));
const THEME_1 = "1";
const THEME_2 = "2";
export const ThemeSelector = ({ children }) => {
  const [theme, setTheme] = useState(null);

  const changeTheme = () => {
    debugger;
    setTheme(theme === "1" ? "2" : "1");
  };

  useLayoutEffect(() => {
    setTimeout(() => {
      if (theme !== THEME_2) {
        setTheme(THEME_2);
      } else {
        setTheme(THEME_1);
      }
    }, 5000);
  }, []);

  return (
    <>
      <React.Suspense fallback={<></>}>
        {theme === "1" && <Theme1 />}
        {theme === "2" && <Theme2 />}
      </React.Suspense>
      <button type="checkbox" value={theme} onClick={changeTheme}>Change Theme</button>
      {children}
    </>
  );
};
5 months ago · Juan Pablo Isaza Denunciar
Responde la pregunta
Encuentra empleos remotos

¡Descubre la nueva forma de encontrar empleo!

Top de empleos
Top categorías de empleo
Empresas
Publicar empleo Planes Nuestro proceso Comercial
Legal
Términos y condiciones Política de privacidad
© 2023 PeakU Inc. All Rights Reserved.