From 0a05fb7400c7271989352fc5dd2b4a0f7f770279 Mon Sep 17 00:00:00 2001 From: pany <939630029@qq.com> Date: Fri, 21 Oct 2022 11:24:02 +0800 Subject: [PATCH] perf: useTheme --- src/hooks/useTheme.ts | 54 +++++++++++++++++++++---------------------- 1 file changed, 27 insertions(+), 27 deletions(-) diff --git a/src/hooks/useTheme.ts b/src/hooks/useTheme.ts index b46b14bd..035a8f6c 100644 --- a/src/hooks/useTheme.ts +++ b/src/hooks/useTheme.ts @@ -9,37 +9,37 @@ interface IThemeList { /** 注册的主题名称, 其中 normal 是必填的 */ export type ThemeName = "normal" | "dark" +/** 主题列表 */ +const themeList: IThemeList[] = [ + { + title: "默认", + name: "normal" + }, + { + title: "黑暗", + name: "dark" + } +] + /** 正在应用的主题名称 */ const activeThemeName = ref(getActiveThemeName() || "normal") +const initTheme = () => { + setHtmlClassName(activeThemeName.value) +} + +const setTheme = (value: ThemeName) => { + activeThemeName.value = value + setHtmlClassName(activeThemeName.value) + setActiveThemeName(activeThemeName.value) +} + +/** 在 html 根元素上挂载 class */ +const setHtmlClassName = (value: ThemeName) => { + document.documentElement.className = value +} + /** 主题 hook */ export function useTheme() { - /** 主题列表 */ - const themeList: IThemeList[] = [ - { - title: "默认", - name: "normal" - }, - { - title: "黑暗", - name: "dark" - } - ] - - const initTheme = () => { - setHtmlClassName(activeThemeName.value) - } - - const setTheme = (value: ThemeName) => { - activeThemeName.value = value - setHtmlClassName(activeThemeName.value) - setActiveThemeName(activeThemeName.value) - } - - /** 在 html 根元素上挂载 class */ - const setHtmlClassName = (value: ThemeName) => { - document.documentElement.className = value - } - return { themeList, activeThemeName, initTheme, setTheme } }