import { useThemePreference } from './hooks/useThemePreference';
import { Component, type ErrorInfo, type ReactNode } from 'react';
import { Button } from '../components/ui';
export class ErrorBoundary extends Component<{ children: ReactNode }, { error?: Error }> {
state: { error?: Error } = {};
static getDerivedStateFromError(error: Error) {
return { error };
}
componentDidCatch(error: Error, info: ErrorInfo) {
console.error('React fatal error', error, info);
}
render() {
return this.state.error ? : this.props.children;
}
}
function FatalError({ error }: { error: Error }) {
const [theme] = useThemePreference();
return (
界面发生致命错误
{error.message}
重新加载会丢失当前浏览器会话中未保存的修改。
);
}