mirror of
https://github.com/d0zingcat/NotionNext.git
synced 2026-05-14 07:26:52 +00:00
optimize init method
This commit is contained in:
@@ -15,10 +15,17 @@ const GlobalContext = createContext()
|
||||
*/
|
||||
export function GlobalContextProvider({ children }) {
|
||||
const [lang, updateLang] = useState(BLOG.LANG)
|
||||
const [locale, updateLocale] = useState(generateLocaleDict(lang))
|
||||
const [locale, updateLocale] = useState(generateLocaleDict(BLOG.LANG))
|
||||
const [theme, setTheme] = useState(BLOG.THEME)
|
||||
const [isDarkMode, updateDarkMode] = useState(false)
|
||||
const [onLoading, changeLoadingState] = useState(false)
|
||||
const [theme, setTheme] = useState(BLOG.THEME)
|
||||
|
||||
useEffect(() => {
|
||||
initLocale(lang, locale, updateLang, updateLocale)
|
||||
initDarkMode(isDarkMode, updateDarkMode)
|
||||
initTheme(theme, changeTheme)
|
||||
}, [])
|
||||
|
||||
Router.events.on('routeChangeStart', (...args) => {
|
||||
changeLoadingState(true)
|
||||
})
|
||||
@@ -43,12 +50,6 @@ export function GlobalContextProvider({ children }) {
|
||||
saveThemeToCookies(theme)
|
||||
}
|
||||
|
||||
useEffect(() => {
|
||||
initLocale(lang, locale, updateLang, updateLocale)
|
||||
initDarkMode(isDarkMode, updateDarkMode)
|
||||
initTheme(theme, changeTheme)
|
||||
}, [])
|
||||
|
||||
return (
|
||||
<GlobalContext.Provider value={{ onLoading, changeLoadingState, locale, updateLocale, isDarkMode, updateDarkMode, theme, setTheme, switchTheme, changeTheme }}>
|
||||
{children}
|
||||
|
||||
@@ -49,7 +49,7 @@ export function generateLocaleDict(langString) {
|
||||
*/
|
||||
export function initLocale(lang, locale, changeLang, changeLocale) {
|
||||
if (isBrowser()) {
|
||||
const queryLang = getQueryVariable('lang') || window.navigator.language
|
||||
const queryLang = getQueryVariable('lang') || loadLangFromCookies() || window.navigator.language
|
||||
let currentLang = lang
|
||||
if (queryLang !== lang) {
|
||||
currentLang = queryLang
|
||||
@@ -57,8 +57,8 @@ export function initLocale(lang, locale, changeLang, changeLocale) {
|
||||
changeLang(currentLang)
|
||||
saveLangToCookies(currentLang)
|
||||
|
||||
const targetLocale = generateLocaleDict(queryLang)
|
||||
if (JSON.stringify(locale) !== JSON.stringify(targetLocale)) {
|
||||
const targetLocale = generateLocaleDict(currentLang)
|
||||
if (JSON.stringify(locale) !== JSON.stringify(currentLang)) {
|
||||
changeLocale(targetLocale)
|
||||
}
|
||||
}
|
||||
|
||||
16
lib/theme.js
16
lib/theme.js
@@ -1,7 +1,7 @@
|
||||
import cookie from 'react-cookies'
|
||||
import BLOG from '@/blog.config'
|
||||
import { ALL_THEME } from '@/themes'
|
||||
import { getQueryVariable } from './utils'
|
||||
import { isBrowser, getQueryVariable } from './utils'
|
||||
|
||||
/**
|
||||
* 初始化主题 , 优先级 query > cookies > systemPrefer
|
||||
@@ -27,14 +27,14 @@ export const initDarkMode = (isDarkMode, updateDarkMode) => {
|
||||
* @param {*} changeTheme
|
||||
*/
|
||||
export const initTheme = (theme, changeTheme) => {
|
||||
const queryTheme = getQueryVariable('theme')
|
||||
if (queryTheme && ALL_THEME.indexOf(queryTheme) > -1) {
|
||||
changeTheme(queryTheme)
|
||||
} else {
|
||||
const userTheme = loadThemeFromCookies()
|
||||
if (userTheme !== theme) {
|
||||
changeTheme(userTheme)
|
||||
if (isBrowser()) {
|
||||
const queryTheme = getQueryVariable('theme') || loadThemeFromCookies() || BLOG.THEME
|
||||
let currentTheme = theme
|
||||
if (queryTheme !== theme && ALL_THEME.indexOf(queryTheme) > -1) {
|
||||
currentTheme = queryTheme
|
||||
}
|
||||
changeTheme(currentTheme)
|
||||
saveThemeToCookies(currentTheme)
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
Reference in New Issue
Block a user