Beispiele
Im Abschnitt Verwendung finden Sie Informationen zum korrekten Design einer Fehlergrenze und den verschiedenen von Guidewire bereitgestellten Konfigurationsoptionen.
Einfaches Beispiel
Fehlergrenzen sind Wrapper, die eine Fallback-Komponente rendern, wenn eines der zugehörigen untergeordneten Elemente einen Fehler aufweist.
<ErrorBoundary>
<BadComponent/>
</ErrorBoundary>
Anpassungsbeispiel
Sie können Eigenschaften an die Fehlergrenze-Komponente übergeben, die dann an ihre Fallback-Komponente übergeben werden.
<ErrorBoundary noticeStyle="card" showErrorMessage>
<BadComponent/>
</ErrorBoundary>
Beispiel für eine einfache benutzerdefinierte Fallback-Komponente
Sie können eine eigene Fallback-Komponente definieren, die beim Auftreten eines Fehlers gerendert wird.
function AlternateFallback () {
return (
<strong>An error occurred.</strong>
)
}
...
<ErrorBoundary fallbackComponent={AlternateFallback}>
<BadComponent/>
</ErrorBoundary>
Beispiel für benutzerdefinierte Fallback-Komponente mit Fehlermeldung
Ein Objekt wird an die Fallback-Komponente übergeben, die das error-JavaScript-Objekt als eine ihrer Eigenschaften enthält.
function AlternateFallback({error}) {
return (
<span><strong>An error occurred:</strong> {error.message}</span>
)
}
...
<ErrorBoundary fallbackComponent={AlternateFallback}>
<BadComponent/>
</ErrorBoundary>
Beispiel für benutzerdefinierte Fallback-Komponente mit Eigenschaften
Zusätzliche Eigenschaften, die an die Fehlergrenze-Komponente übergeben werden, werden als Eigenschaften für die an fallbackComponent übergebene Komponente hinzugefügt.
function MakeToast(error) {
ToastProvider.toast({
message: error.message,
autoClose: 3000,
type: "error",
});
}
function AlternateFallback({error, buttonLabel}) {
return (
<>
<ToastProvider />
<Button label={buttonLabel} onClick={(error) => MakeToast(error)}/>
</>
)
}
...
<ErrorBoundary
fallbackComponent={AlternateFallback}
buttonLabel="Click for notification"
>
<BadComponent/>
</ErrorBoundary>
Verwendung
Überblick
Die Fehlergrenze-Komponente ist eine Wrapper-Komponente, die untergeordnete Komponenten und einige optionale Anpassungen unterstützt. Wenn eine untergeordnete Komponente normal gerendert wird, führt die Fehlergrenze-Komponente keine Aktion aus. Wenn jedoch eine untergeordnete Komponente während des Renderns einen Fehler auslöst, wird die Fehlergrenze-Komponente aktiviert und ersetzt diese Komponente durch eine vordefinierte Fehler-Benutzeroberfläche.

Die Fehlergrenze-Komponente fängt die von React-Komponenten ausgelösten JavaScript-Fehler ab und meldet sie standardmäßig an Jutro-Ereignisse. Dieses Verhalten kann jedoch bei Bedarf geändert werden. Sie stellt außerdem eine Wiederherstellungsaktion bereit und verhindert, dass die gesamte Anwendung abstürzt.
Die Fehler-Benutzeroberfläche besteht aus einem Symbol, einem Fehlertext und einem detaillierten Fehlertext sowie einer Aktionsschaltfläche. Alle können kundenspezifisch angepasst und die Komponente überall in der Anwendung verwendet werden. Standardmäßig wird es um die Jutro-Anwendungsvorlage herum verwendet und umschließt auch alle Micro-Frontends. Alle Parameter für die Fehlergrenze-Komponente und Beispiele für die verschiedenen Stile, z. B. „card“ oder „full height“, sind in Storybook verfügbar.
Komponente mit einer Fehlergrenze umschließen
Jede Komponente kann in einer Fehlergrenze-Komponente umschlossen werden. Es wird jedoch empfohlen, sie hauptsächlich für Komponenten verwenden, die auf Netzwerkaufrufen basieren oder mit APIs oder Datenbanken interagieren, da bei diesen Komponenten häufiger Fehler auftreten. Eine Komponente kann wie folgt mit einer Fehlergrenze-Komponente umschlossen werden:
const MyComponentWithBoundary = (props) => (
<ErrorBoundary noticeStyle="card">
<MyComponent {...props} />
</ErrorBoundary>
);
Anpassung
Sie können alle Bereiche der Fehlergrenze-Komponente mithilfe von Metadaten oder JSX anpassen. Außerdem können Sie festlegen, ob der technische Fehler angezeigt wird, der von einer untergeordneten Komponente ausgelöst wurde.
Beispielsweise können Sie die Metadaten so konfigurieren, dass der durch die Eigenschaft showErrorMessage dargestellte technische Fehler wie folgt angezeigt wird:
{
"id": "generated-f620b8f5-44fd-43a4-b828-1a88a51c80f5",
"type": "container",
"component": "ErrorBoundary",
"content": [
{
"id": "generated-fb18c51a-a30e-4488-a66a-8d99d948c24f",
"type": "element",
"component": "BadComponent"
}
],
"componentProps": {
"showErrorMessage": true
}
}
So können Sie auch in JSX verfahren, indem Sie die zusätzliche Eigenschaft showErrorMessage übergeben:
const BasicTemplate: ErrorBoundaryStory = (args) => (
<ErrorBoundary
showErrorMessage
{...args}>
<BadComponent />
</ErrorBoundary>
);
Sie können andere Eigenschaften, z. B. noticeStyle, mainMessage, detailedMessage und actions mit ihren jeweiligen Rückruffunktionen auf die gleiche Weise übergeben und anpassen.
Außerdem können Sie die standardmäßige Fehler-Benutzeroberfläche durch eine benutzerdefinierte Komponente ersetzen. Weitere Anpassungsbeispiele finden Sie in Storybook.
Code
<ErrorBoundary>
<BadComponent/>
</ErrorBoundary>
Importanweisung
import { ErrorBoundary } from '@jutro/components';
Komponentenvertrag
Vergewissern Sie sich, dass Sie die API-Oberfläche der Design System-Komponenten und die damit verbundenen Auswirkungen und Kompromisse verstehen. Erfahren Sie mehr in unserer Einführung zur Komponenten-API.
Eigenschaften
childrenerforderlich
BeschreibungChildren to be wrapped by the error boundary.
fallbackComponent
BeschreibungAn optional custom component to render when an error occurs.
Standardwert[ErrorNotice](#error-notice-properties)
onError
BeschreibungAn optional action to be triggered when errors occur.
StandardwertjutroEventsReporter
Eigenschaften von Fehlermeldungen
Diese zusätzlichen Eigenschaften sind verfügbar, wenn der Standardwert für die Fallback-Komponente verwendet wird.
actions
Typ{label: IntlMessageShape, callback: func}[]
BeschreibungAn array of label-callback objects to be displayed as recovery action buttons. See IntlMessageShape for details on the type for the label property.
Standardwert{label: 'Reload Page', callback: () => window.location.reload()}[]
detailedMessage
BeschreibungA more detailed message to be displayed below the main message on the error UI.
Standardwert'We were not able to recover from the situation automatically. Please reload the page.'
error
BeschreibungThe error object with technical information.
icon
BeschreibungAn Icon component to render on the component. The value must be an Icon component or the icon's name. For example, CheckIcon or 'gw-check'.
StandardwertErrorOutlineIcon
mainMessage
BeschreibungThe main message to be displayed to the user on the error UI.
Standardwert'Something went wrong with a component'
noticeStyle
Typ'card' | 'plain' | 'fullHeight'
BeschreibungThe notice container visual style.
showErrorMessage
BeschreibungIf set to true, the error message from the Error object will be shown.
Hooks
Für error boundary sind keine Hooks verfügbar.
Übersetzungsschlüssel
Die folgenden Übersetzungsschlüssel sind für die Fehlermeldungskomponente definiert, die als Standardwert für die Fallback-Komponente verwendet wird:
Es gibt keine Übersetzungen für error boundary.
Informationen über die Verwaltung von Übersetzungen finden Sie in unserem Abschnitt über Internationalisierung.
Escape Hatches
Weitere Informationen finden Sie in unserer Dokumentation über Escape-Hatches.