javascript / intermediate
Snippet
Abfangen von React-Render-Fehlern mit OOP-Klassenbasierten Error Boundaries
React erfordert objektorientierte Klassenkomponenten zur Definition von Error Boundaries, da funktionale Hooks die Lebenszyklusmethoden getDerivedStateFromError oder componentDidCatch nicht unterstützen. Durch das Ableiten von React.Component aktualisiert die statische Methode getDerivedStateFromError den Zustand synchron für ein Fallback-UI, während componentDidCatch das Logging von Absturzdaten ermöglicht.
snippet.js
javascript
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
import React, { Component } from 'react';export class SafeErrorBoundary extends Component {constructor(props) {super(props);this.state = { hasError: false, errorDetails: '' };}static getDerivedStateFromError(error) {return { hasError: true, errorDetails: error.message };}componentDidCatch(error, errorInfo) {console.error('Captured runtime error in child subtree:', error, errorInfo);}render() {if (this.state.hasError) {return (<div role="alert" className="error-fallback"><h2>Something crashed</h2><pre>{this.state.errorDetails}</pre></div>);}return this.props.children;}}
react
Erklärung
1
export class SafeErrorBoundary extends Component {
Deklariert eine OOP-Klassenkomponente, die von der React.Component-Basisklasse erbt.
2
static getDerivedStateFromError(error) {
Statische Lifecycle-Methode, die eine geworfene Kind-Ausnahme in Fallback-Zustand umwandelt.
3
componentDidCatch(error, errorInfo) {
Instanz-Lifecycle-Methode, die nach dem Auftreten eines Fehlers für Logging und Seiteneffekte aufgerufen wird.
4
return this.props.children;
Rendert die geschachtelte JSX-Hierarchie normal, solange keine unbehandelten Render-Fehler auftreten.