diff --git a/src/ThemeProvider.tsx b/src/ThemeProvider.tsx index 7804771..0d6ca85 100644 --- a/src/ThemeProvider.tsx +++ b/src/ThemeProvider.tsx @@ -1,4 +1,4 @@ -import React, { createContext } from "react" +import React, { createContext, useMemo } from "react" import { ThemeProvider as BaseThemeProvider } from "styled-components" import { darkTheme, lightTheme } from "./design/themes" @@ -19,14 +19,25 @@ export const ThemeContext = createContext(null) const ThemeProvider = ({ children }: IThemeProviderProps) => { const [theme, setTheme] = useLocalStorage("theme", "light") - const themeObject = theme === "dark" ? darkTheme : lightTheme - const toggleTheme = () => { - setTheme(theme === "light" ? "dark" : "light") - } + const themeObject = useMemo( + () => (theme === "dark" ? darkTheme : lightTheme), + [theme] + ) + + const contextValue = useMemo( + () => ({ + theme, + setTheme, + toggleTheme: () => { + setTheme(theme === "light" ? "dark" : "light") + }, + }), + [theme, setTheme] + ) return ( - + {children} )