'use client'; import React, { useEffect, useState } from 'react'; import { FontAwesomeIcon } from '@fortawesome/react-fontawesome'; import { faLightbulb } from '@fortawesome/free-solid-svg-icons'; import { faLightbulb as farLightbulb } from '@fortawesome/free-regular-svg-icons'; import { useLanguage } from '@/context/LanguageContext'; export default function ThemeToggle() { const [theme, setTheme] = useState('dark'); const [mounted, setMounted] = useState(false); const { t } = useLanguage(); // 组件挂载后执行 useEffect(() => { setMounted(true); const savedTheme = localStorage.getItem('theme'); if (savedTheme) { setTheme(savedTheme); document.documentElement.setAttribute('data-theme', savedTheme); } }, []); // 切换主题 const toggleTheme = () => { const newTheme = theme === 'dark' ? 'light' : 'dark'; setTheme(newTheme); // 保存到本地存储并设置 data-theme 属性 localStorage.setItem('theme', newTheme); document.documentElement.setAttribute('data-theme', newTheme); }; // 如果组件尚未挂载,返回空白以避免服务器/客户端不匹配 if (!mounted) return null; return ( ); }