/
lizardking
/
react_project
Обзор
Документация
Войти
/
lizardking
/
react_project
Код
Запросы
0
Задачи
Вики
Пакеты
0
Релизы
0
CI/CD
Аналитика
Безопасность
react19
src/shared/ui/Theme/ThemeProvider.tsx
22 строки
681 B
LizardKing
Task 8 - React Portal
10 ноя 2025, 16:20
10 ноя 2025, 16:20
683d199
Код
Авторство
О чём код?
import React, { useEffect, useMemo, useState } from 'react' import { ThemeContext } from './ThemeContext' export function ThemeProvider({ children }: { children: React.ReactNode }) { const [theme, setTheme] = useState<'dark' | 'light'>('dark') function toggleTheme() { setTheme((prev) => (prev === 'dark' ? 'light' : 'dark')) } useEffect(() => { const root = document.documentElement if (theme === 'light') root.classList.add('light') else root.classList.remove('light') }, [theme]) const contextValue = useMemo(() => ({ theme, toggleTheme }), [theme]) return <ThemeContext.Provider value={contextValue}>{children}</ThemeContext.Provider> }