12345678910111213141516171819202122232425262728293031323334353637383940414243 |
- import type { ComponentType, ErrorInfo, ReactElement } from 'react';
- import { Component } from 'react';
- class ErrorBoundary extends Component<
- {
- children: ReactElement;
- fallback: ReactElement;
- },
- {
- hasError: boolean;
- }
- > {
- state = { hasError: false };
- static getDerivedStateFromError() {
- return { hasError: true };
- }
- componentDidCatch(error: Error, errorInfo: ErrorInfo) {
- console.error(error, errorInfo);
- }
- render() {
- if (this.state.hasError) {
- return this.props.fallback;
- }
- return this.props.children;
- }
- }
- export function withErrorBoundary<T extends Record<string, unknown>>(
- Component: ComponentType<T>,
- ErrorComponent: ReactElement,
- ) {
- return function WithErrorBoundary(props: T) {
- return (
- <ErrorBoundary fallback={ErrorComponent}>
- <Component {...props} />
- </ErrorBoundary>
- );
- };
- }
|