コンポーネントイベント伝達
このフレームワークでは、キャプチャフェーズとバブルフェーズがコンポーネントイベントの伝達でサポートされます。これらのフェーズは DOM の処理パターンと似ており、対象のコンポーネントがイベントに対応したり、場合によっては後続のハンドラの動作を制御したりできます。
イベントを起動するコンポーネントは、ソースコンポーネントと呼ばれます。フレームワークでは、異なるフェーズでイベントを処理できます。これらのフェーズにより、アプリケーションのイベントの最適な処理を柔軟に行うことができます。
次のフェーズがあります。
- キャプチャ
- イベントがキャプチャされ、アプリケーションルートからソースコンポーネントに伝達していきます。イベントはコンテインメント階層内のキャプチャイベントを受信するコンポーネントによって処理されます。
- アプリケーションルートからイベントを起動したソースコンポーネントへと順番にイベントハンドラが呼び出されていきます。
- このフェーズの任意の登録ハンドラでイベントの伝達を停止できます。停止した時点でこのフェーズまたはバブルフェーズのハンドラはそれ以上コールされなくなります。
- バブル
- イベントを起動したコンポーネントはそのイベントを処理できます。その後イベントはソースコンポーネントからアプリケーションルートにバブルアップしていきます。イベントはコンテインメント階層内のバブルイベントを受信するコンポーネントによって処理されます。
- イベントを起動したソースコンポーネントからアプリケーションルートへと順番にイベントハンドラが呼び出されていきます。
- このフェーズの任意の登録ハンドラでイベントの伝達を停止できます。停止した時点でこのフェーズのハンドラはそれ以上コールされなくなります。
次に、コンポーネントイベントの伝達シーケンスを示します。
- イベントの起動 — コンポーネントイベントが起動します。
- キャプチャフェーズ — フレームワークはアプリケーションルートからソースコンポーネントへのキャプチャフェーズをすべてのコンポーネントがトラバースされるまで実行します。任意のイベント処理で、イベントに対して stopPropagation() をコールして伝達を停止できます。
- バブルフェーズ — フレームワークはソースコンポーネントからアプリケーションルートへのバブルフェーズをすべてのコンポーネントがトラバースされるまで、または stopPropagation() がコールされるまで実行します。