Skip to content

Commit b44be0c

Browse files
committed
🐛 fix: 修正设定主题后仍然响应系统主题的bug
1 parent befe3be commit b44be0c

File tree

1 file changed

+9
-13
lines changed

1 file changed

+9
-13
lines changed

src/containers/ThemeProvider/ThemeSwitcher.tsx

Lines changed: 9 additions & 13 deletions
Original file line numberDiff line numberDiff line change
@@ -32,29 +32,25 @@ const ThemeObserver: FC<{
3232
}
3333
}, [setAppearance]);
3434

35-
useLayoutEffect(() => {
36-
// 如果是自动的话,则去做一次匹配
37-
if (themeMode === 'auto') matchBrowserTheme();
38-
// 否则就明确设定亮暗色
39-
else setAppearance(themeMode);
40-
}, [themeMode]);
41-
4235
// 自动监听系统主题变更
4336
useLayoutEffect(() => {
44-
if (!darkThemeMatch) {
45-
darkThemeMatch = matchThemeMode('dark');
37+
// 如果不是自动,就明确设定亮暗色
38+
if (themeMode !== 'auto') {
39+
setAppearance(themeMode);
40+
return;
4641
}
42+
// 如果是自动的话,则去做一次匹配,并开始监听
43+
setTimeout(matchBrowserTheme, 1);
4744

48-
if (themeMode === 'auto') {
49-
setTimeout(matchBrowserTheme, 1);
45+
if (!darkThemeMatch) {
46+
darkThemeMatch = matchThemeMode('dark');
5047
}
51-
5248
darkThemeMatch.addEventListener('change', matchBrowserTheme);
5349

5450
return () => {
5551
darkThemeMatch.removeEventListener('change', matchBrowserTheme);
5652
};
57-
}, []);
53+
}, [themeMode]);
5854

5955
return null;
6056
};

0 commit comments

Comments
 (0)