コンポーネントエラーの処理

errorCallback() は、Lightning Web Components 独自のフックです。これを実装すると、ツリー内のすべての下位コンポーネントのエラーを捕捉するエラー境界コンポーネントを作成できます。これは、下位のライフサイクルフックで発生したエラーや、HTML テンプレートでイベントハンドラが宣言されたときに発生したエラーを捕捉します。エラー境界コンポーネントをコーディングすると、スタック情報を記録し、代替ビューを表示して、発生した出来事と次に実行すべきアクションをユーザに通知できます。

作成したエラー境界コンポーネントは、アプリケーション全体で再利用できます。これらのエラー境界を定義する場所は、自分で決定します。アプリケーション全体をラップすることも、個々のコンポーネントごとにラップすることもできます。ほとんどの場合、ご使用のアーキテクチャは、その間のどこかに当てはまります。問題の発生をどこでユーザに通知するかについて考えます。

<!-- boundary.html -->
<template>
  <template lwc:if={error}>
    <error-view error={error} info={stack}></error-view>
  </template>
  <template lwc:else>
    <healthy-view></healthy-view>
  </template>
</template>
// boundary.js
import { LightningElement } from "lwc";
export default class Boundary extends LightningElement {
  error;
  stack;
  errorCallback(error, stack) {
    this.error = error;
  }
}

error 引数は JavaScript ネイティブエラーオブジェクト、stack 引数は文字列です。

テンプレートで、lwc:[if|elseif|else] を使用する必要はありません。たとえば、単一のコンポーネントテンプレートを定義するとします。このコンポーネントがエラーをスローした場合、フレームワークは、再表示時に errorCallback をコールして、コンポーネントをマウント解除します。

<!-- boundary.html -->
<template>
  <my-one-and-only-view></my-one-and-only-view>
</template>

関連トピック

The Japanese Summer '24 guide is now live

日本語の Summer '24 ガイドが公開されました! 「Component Reference (コンポーネントリファレンス)」は、以前と同様にコンポーネントライブラリにあります。