Business
Jobs
  • About Us
  • Solutions
    • Job Postings
      Post your job and receive qualified candidates in 48h.
    • Candidate Assessments
      500+ technical and psychological tests, plus anti-fraud.
    • Headhunting
      Tailor-made executive search from start to finish.
    • Payroll + EOR
      Payroll dispersal and EOR across 15+ LATAM countries.
  • Pricing
  • Jobs

0

193
Views
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)

about 4 years ago · Juan Pablo Isaza
1 answers
Answer question

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}
    </>
  );
};
about 4 years ago · Juan Pablo Isaza Report
Answer question
Find remote jobs

Discover the new way to find a job!

Top jobs
Top job categories
Business
Post vacancy Pricing Sales
Legal
Terms and conditions Privacy policy
© 2026 PeakU Inc. All Rights Reserved.
Andres GPT
Show me some job opportunities
There's an error!