diff --git a/packages/@core/preferences/src/preferences.ts b/packages/@core/preferences/src/preferences.ts index 5c958267..23c5f8be 100644 --- a/packages/@core/preferences/src/preferences.ts +++ b/packages/@core/preferences/src/preferences.ts @@ -198,9 +198,16 @@ class PreferenceManager { window .matchMedia('(prefers-color-scheme: dark)') .addEventListener('change', ({ matches: isDark }) => { - this.updatePreferences({ - theme: { mode: isDark ? 'dark' : 'light' }, - }); + // 如果偏好设置中主题模式为auto,则跟随系统更新 + if (this.state.theme.mode === 'auto') { + this.updatePreferences({ + theme: { mode: isDark ? 'dark' : 'light' }, + }); + // 恢复为auto模式 + this.updatePreferences({ + theme: { mode: 'auto' }, + }); + } }); } diff --git a/packages/effects/plugins/src/vxe-table/init.ts b/packages/effects/plugins/src/vxe-table/init.ts index d0b9f3b1..00e9d8ab 100644 --- a/packages/effects/plugins/src/vxe-table/init.ts +++ b/packages/effects/plugins/src/vxe-table/init.ts @@ -106,7 +106,7 @@ export function setupVbenVxeTable(setupOptions: SetupVxeTable) { initVxeTable(); useTableForm = useVbenForm; - const preference = usePreferences(); + const { isDark, locale } = usePreferences(); const localMap = { 'zh-CN': zhCN, @@ -114,11 +114,11 @@ export function setupVbenVxeTable(setupOptions: SetupVxeTable) { }; watch( - [() => preference.theme.value, () => preference.locale.value], - ([theme, locale]) => { - VxeUI.setTheme(theme === 'dark' ? 'dark' : 'light'); - VxeUI.setI18n(locale, localMap[locale]); - VxeUI.setLanguage(locale); + [() => isDark.value, () => locale.value], + ([isDarkValue, localeValue]) => { + VxeUI.setTheme(isDarkValue ? 'dark' : 'light'); + VxeUI.setI18n(localeValue, localMap[localeValue]); + VxeUI.setLanguage(localeValue); }, { immediate: true,