/
githubmr
/
facebook-react
Обзор
Документация
Войти
/
githubmr
/
facebook-react
Код
Запросы
0
Задачи
Вики
Пакеты
0
Релизы
0
Аналитика
main
fixtures/ssr/src/components/Theme.js
25 строк
745 B
Sebastian Markbåge
Partial Hydration (#14717)
12 фев 2019, 08:25
Не верифицирован
12 фев 2019, 08:25
f3a1495
Код
Авторство
О чём код?
import React, {createContext, useContext, useState} from 'react'; const Theme = createContext('light'); export default Theme; export function ThemeToggleButton({onChange}) { let theme = useContext(Theme); let [targetTheme, setTargetTheme] = useState(theme); function toggleTheme() { let newTheme = theme === 'light' ? 'dark' : 'light'; // High pri, responsive update. setTargetTheme(newTheme); // Perform the actual theme change in a separate update. setTimeout(() => onChange(newTheme), 0); } if (targetTheme !== theme) { return 'Switching to ' + targetTheme + '...'; } return ( <a className="link" onClick={toggleTheme}> Switch to {theme === 'light' ? 'Dark' : 'Light'} theme </a> ); }