Skip to content

Commit a17dc05

Browse files
committed
refactor: memoize toggleTheme function
1 parent ecff04b commit a17dc05

File tree

1 file changed

+6
-4
lines changed

1 file changed

+6
-4
lines changed

web/src/components/top-bar.tsx

Lines changed: 6 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,5 @@
11
import React from "react";
2-
import { useMemo, useLayoutEffect, useState } from "react";
2+
import { useMemo, useLayoutEffect, useState, useCallback } from "react";
33
import { useLocation } from "react-router-dom";
44
import logoWide from "src/assets/svg/logo-wide.svg";
55
import logoSquare from "src/assets/svg/logo-square.svg";
@@ -55,12 +55,12 @@ export function TopBar({ version, links }: TopBarProps): JSX.Element {
5555
}
5656
}, []);
5757

58-
function toggleTheme() {
58+
const toggleTheme = useCallback(() => {
5959
const newTheme = isDark ? "light" : "dark";
6060
setIsDark(!isDark);
6161
localStorage.setItem("theme", newTheme);
6262
document.documentElement.setAttribute("data-theme", newTheme);
63-
}
63+
}, [isDark]);
6464

6565
return (
6666
<div className="bg-neutral">
@@ -134,7 +134,9 @@ export function TopBar({ version, links }: TopBarProps): JSX.Element {
134134
<path d="M21 12.79A9 9 0 1 1 11.21 3 7 7 0 0 0 21 12.79z"></path>
135135
</svg>
136136
<input
137-
onClick={toggleTheme}
137+
onClick={() => {
138+
toggleTheme();
139+
}}
138140
id="theme-toggle"
139141
type="checkbox"
140142
value="dzcodeLight"

0 commit comments

Comments
 (0)