Merge pull request #207 from samuel871211/perf_useTheme
perf: add `useMemo` to the return value of `useTheme`
This commit is contained in:
commit
dd0434c4ed
1 changed files with 9 additions and 11 deletions
|
|
@ -1,4 +1,4 @@
|
||||||
import { useCallback, useEffect, useState } from "react";
|
import { useCallback, useEffect, useMemo, useState } from "react";
|
||||||
|
|
||||||
type Theme = "light" | "dark" | "system";
|
type Theme = "light" | "dark" | "system";
|
||||||
|
|
||||||
|
|
@ -36,16 +36,14 @@ const useTheme = (): [Theme, (mode: Theme) => void] => {
|
||||||
};
|
};
|
||||||
}, [theme]);
|
}, [theme]);
|
||||||
|
|
||||||
return [
|
const setThemeWithSideEffect = useCallback((newTheme: Theme) => {
|
||||||
theme,
|
setTheme(newTheme);
|
||||||
useCallback((newTheme: Theme) => {
|
localStorage.setItem("theme", newTheme);
|
||||||
setTheme(newTheme);
|
if (newTheme !== "system") {
|
||||||
localStorage.setItem("theme", newTheme);
|
document.documentElement.classList.toggle("dark", newTheme === "dark");
|
||||||
if (newTheme !== "system") {
|
}
|
||||||
document.documentElement.classList.toggle("dark", newTheme === "dark");
|
}, []);
|
||||||
}
|
return useMemo(() => [theme, setThemeWithSideEffect], [theme]);
|
||||||
}, []),
|
|
||||||
];
|
|
||||||
};
|
};
|
||||||
|
|
||||||
export default useTheme;
|
export default useTheme;
|
||||||
|
|
|
||||||
Loading…
Reference in a new issue