DEV Community

CHENER ZHANG
CHENER ZHANG

Posted on

Change Dark theme React

I read a lots article of writing a toggle to change the theme. For a beginner, this is entire too difficult to understand multiple files and code.

I'm going to show you guys a simple way to change the by using useState and styled-components 😛 😝

Here is my step:

Step 1 :

Install styled-components, we need this library.

npm install --save styled-components 
Enter fullscreen mode Exit fullscreen mode

Step 2:
Import these things, you will use useState later 😏

import { ThemeProvider } from "styled-components"; import { createGlobalStyle } from "styled-components"; import { useState } from "react"; 
Enter fullscreen mode Exit fullscreen mode

Step 3:
Initialize the Dark and Light
Simply define our lovely variable 😛:

 const [theme, setTheme] = useState("light"); const light = { body: "#E2E2E2" // you can change to any color you like }; const dark = { body: "#363537" // you can change to any color you like }; const GlobalStyle = createGlobalStyle` body{ background: ${({ theme }) => theme.body}; } `; 
Enter fullscreen mode Exit fullscreen mode

Step 4:
Return

 import "./styles.css"; import { ThemeProvider } from "styled-components"; import { createGlobalStyle } from "styled-components"; import { useState } from "react"; export default function App() { const [theme, setTheme] = useState("light"); const light = { body: "#E2E2E2" }; const dark = { body: "#363537" }; const GlobalStyle = createGlobalStyle` body{ background: ${({ theme }) => theme.body}; } `; return ( <ThemeProvider theme={theme === "light" ? dark : light}> <GlobalStyle /> <button onClick={() => { if (theme === "light") { setTheme("dark"); } else { setTheme("light"); } }} > change </button> </ThemeProvider> ); } 
Enter fullscreen mode Exit fullscreen mode

Here is a demo:

demo

Hope these help you, Thanks for reading, Have fun! 🥰

Top comments (0)