写的一个适配暗黑模式的钩子,实际环境中有浏览器兼容性的问题
import { useState, useEffect } from 'react';
const useDarkModeToggle = () => {
const [isDarkMode, setIsDarkMode] = useState(false);
useEffect(() => {
const darkModeMediaQuery = window.matchMedia('(prefers-color-scheme: dark)');
// 设置当前的模式
setIsDarkMode(darkModeMediaQuery.matches);
console.log('=== dark switch');
const handleChange = (e: any) => setIsDarkMode(e.matches);
// 监听变化
darkModeMediaQuery.addEventListener('change', handleChange);
return () => darkModeMediaQuery.removeListener(handleChange);
}, []);
return isDarkMode;
};
export default useDarkModeToggle;