diff --git a/lib/global.js b/lib/global.js index 0432b5e0..c9564cce 100644 --- a/lib/global.js +++ b/lib/global.js @@ -17,9 +17,7 @@ export function GlobalContextProvider ({ children }) { const [locale, updateLocale] = useState(generateLocaleDict('en-US')) const [isDarkMode, updateDarkMode] = useState(false) const [onLoading, changeLoadingState] = useState(false) - // 会优先读取浏览器中的主题参数 - const [theme, setTheme] = useState(Router?.router?.query?.theme || BLOG.THEME) - + const [theme, setTheme] = useState(BLOG.THEME) Router.events.on('routeChangeStart', (...args) => { changeLoadingState(true) }) @@ -30,6 +28,11 @@ export function GlobalContextProvider ({ children }) { useEffect(() => { if (!hasInit) { + const userTheme = getQueryVariable('theme') + console.log('用户主题', userTheme) + if (userTheme && ALL_THEME.indexOf(userTheme) > -1) { + setTheme(userTheme) + } initLocale(locale, updateLocale) initDarkMode(isDarkMode, updateDarkMode) hasInit = true @@ -43,6 +46,16 @@ export function GlobalContextProvider ({ children }) { ) } +function getQueryVariable (variable) { + const query = window.location.search.substring(1) + const vars = query.split('&') + for (let i = 0; i < vars.length; i++) { + const pair = vars[i].split('=') + if (pair[0] == variable) { return pair[1] } + } + return (false) +} + /** * 深度合并两个对象 * @param target